Added native Bazel build to GUI2. Reduced a lot of the unused Angular CLI structures

Reviewers should look at the changes in WORKSPACE, BUILD, BUILD.bazel, README.md files
This is only possible now as rules_nodejs went to 1.0.0 on December 20
gui2 has now been made the entry point (rather than gui2-fw-lib)
No tests or linting are functional yet for Typescript
Each NgModule now has its own BUILD.bazel file with ng_module
gui2-fw-lib is all one module and has been refactored to simplify the directory structure
gui2-topo-lib is also all one module - its directory structure has had 3 layers removed
The big bash script in web/gui2/BUILD has been removed - all is done through ng_module rules
in web/gui2/src/main/webapp/BUILD.bazel and web/gui2/src/main/webapp/app/BUILD.bazel

Change-Id: Ifcfcc23a87be39fe6d6c8324046cc8ebadb90551
diff --git a/WORKSPACE b/WORKSPACE
index ce3f50b..f461013 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -2,7 +2,7 @@
     name = "org_onosproject_onos",
     managed_directories = {
         "@gui1_npm": ["tools/gui/node_modules"],
-        "@npm": ["web/gui2-fw-lib/node_modules"],
+        "@npm": ["web/gui2/node_modules"],
     },
 )
 
@@ -124,9 +124,9 @@
 generate_gnoi()
 
 # For GUI2 build
-RULES_NODEJS_VERSION = "0.37.0"
+RULES_NODEJS_VERSION = "1.0.0"
 
-RULES_NODEJS_SHA256 = "0d9660cf0894f1fe1e9840818553e0080fbce0851169812d77a70bdb9981c946"
+RULES_NODEJS_SHA256 = "3887b948779431ac443e6a64f31b9e1e17b8d386a31eebc50ec1d9b0a6cabd2b"
 
 load("//tools/build/bazel:topo_workspace.bzl", "generate_topo_device")
 
@@ -141,18 +141,21 @@
 )
 
 # Rules for compiling sass
-RULES_SASS_VERSION = "86ca977cf2a8ed481859f83a286e164d07335116"
+RULES_SASS_VERSION = "1.24.0"
 
-RULES_SASS_SHA256 = "4f05239080175a3f4efa8982d2b7775892d656bb47e8cf56914d5f9441fb5ea6"
+RULES_SASS_SHA256 = "77e241148f26d5dbb98f96fe0029d8f221c6cb75edbb83e781e08ac7f5322c5f"
 
 http_archive(
     name = "io_bazel_rules_sass",
     sha256 = RULES_SASS_SHA256,
     strip_prefix = "rules_sass-%s" % RULES_SASS_VERSION,
-    url = "https://github.com/bazelbuild/rules_sass/archive/%s.zip" % RULES_SASS_VERSION,
+    urls = [
+        "https://github.com/bazelbuild/rules_sass/archive/%s.zip" % RULES_SASS_VERSION,
+        "https://mirror.bazel.build/github.com/bazelbuild/rules_sass/archive/%s.zip" % RULES_SASS_VERSION,
+    ],
 )
 
-load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "npm_install", "yarn_install")
+load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "npm_install", "yarn_install")
 
 # Setup the Node repositories. We need a NodeJS version that is more recent than v10.15.0
 # because "selenium-webdriver" which is required for "ng e2e" cannot be installed.
@@ -168,8 +171,8 @@
 # TODO give this a name like `gui2_npm` once the @bazel/karma tools can tolerate a name other than `npm`
 yarn_install(
     name = "npm",
-    package_json = "//web/gui2-fw-lib:package.json",
-    yarn_lock = "//web/gui2-fw-lib:yarn.lock",
+    package_json = "//web/gui2:package.json",
+    yarn_lock = "//web/gui2:yarn.lock",
 )
 
 npm_install(
@@ -185,9 +188,9 @@
 
 install_bazel_dependencies()
 
-RULES_WEBTESTING_VERSION = "0.3.1"
+RULES_WEBTESTING_VERSION = "0.3.3"
 
-RULES_WEBTESTING_SHA256 = "f89ca8e91ac53b3c61da356c685bf03e927f23b97b086cc593db8edc088c143f"
+RULES_WEBTESTING_SHA256 = "9bb461d5ef08e850025480bab185fd269242d4e533bca75bfb748001ceb343c3"
 
 http_archive(
     name = "io_bazel_rules_webtesting",