Refactor extension to webpack

This change is the biggest in the history of the project. The entire
project has been refactored so it is built with webpack.

This involves:
- Creating webpack and npm config files.
- Fixing some bugs in the code due to the fact that webpack uses strict
mode.
- Merging some pieces of code which were shared throughout the codebase
(not exhaustive, more work should be done in this direction).
- Splitting the console_inject.js file into separate files (it had 1000+
lines).
- Adapting all the build-related files (Makefile, bash scripts, etc.)
- Changing the docs to explain the new build process.
- Changing the Zuul playbook/roles to adapt to the new build process.

Change-Id: I16476d47825461c3a318b3f1a1eddb06b2df2e89
diff --git a/templates/manifest.gjson b/templates/manifest.gjson
index 67eeab6..e3efb13 100644
--- a/templates/manifest.gjson
+++ b/templates/manifest.gjson
@@ -18,34 +18,34 @@
   "content_scripts": [
     {
       "matches": ["https://support.google.com/s/community*"],
-      "js": ["common/api.js", "common/content_scripts.js", "content_scripts/console_inject.js"]
+      "js": ["communityConsoleMain.bundle.js"]
     },
     {
       "matches": ["https://support.google.com/s/community*"],
-      "js": ["common/content_scripts.js", "content_scripts/console_inject_start.js"],
-      "css": ["common/console.css"],
+      "js": ["communityConsoleStart.bundle.js"],
+      "css": ["css/common/console.css"],
       "run_at": "document_start"
     },
     {
       "matches": ["https://support.google.com/*/threads*"],
-      "js": ["content_scripts/forum_inject.js"]
+      "js": ["publicForum.bundle.js"]
     },
     {
       "matches": ["https://support.google.com/*/thread/*"],
       "exclude_matches": ["https://support.google.com/s/community*", "https://support.google.com/*/thread/new*"],
-      "js": ["common/content_scripts.js", "content_scripts/thread_inject.js"],
+      "js": ["publicThread.bundle.js"],
       "run_at": "document_end"
     },
     {
       "matches": ["https://support.google.com/s/community*", "https://support.google.com/*/thread/*"],
       "exclude_matches": ["https://support.google.com/*/thread/new*"],
-      "js": ["common/content_scripts.js", "common/cs_event_listener.js", "content_scripts/profileindicator_inject.js"]
+      "js": ["profileIndicator.bundle.js"]
     },
     {
       "matches": ["https://support.google.com/*/profile/*", "https://support.google.com/profile/*"],
       "all_frames": true,
-      "js": ["common/content_scripts.js", "content_scripts/profile_inject.js"],
-      "css": ["common/forum.css"]
+      "js": ["profile.bundle.js"],
+      "css": ["css/common/forum.css"]
     }
   ],
   "permissions": [
@@ -64,15 +64,16 @@
     {
       "resources": [
 #endif
-        "injections/profileindicator_inject.js",
-        "injections/profileindicator_inject.css",
-        "injections/ccdarktheme.css",
-        "injections/batchlock_inject.js",
-        "injections/batchlock_inject.css",
-        "injections/enhanced_announcements_dot.css",
-        "injections/reposition_expand_thread.css",
-        "injections/thread_list_avatars.css",
-        "injections/autorefresh_list.css"
+        "profileIndicatorInject.bundle.js",
+        "batchLockInject.bundle.js",
+
+        "css/profileindicator_inject.css",
+        "css/ccdarktheme.css",
+        "css/batchlock_inject.css",
+        "css/enhanced_announcements_dot.css",
+        "css/reposition_expand_thread.css",
+        "css/thread_list_avatars.css",
+        "css/autorefresh_list.css"
 #if defined(CHROMIUM_MV3)
       ],
       "matches": [
@@ -99,13 +100,10 @@
 #if defined(CHROMIUM)
     "persistent": false,
 #endif
-    "scripts": [
-      "common/common.js",
-      "background.js"
-    ]
+    "scripts": ["background.bundle.js"]
 #endif
 #if defined(CHROMIUM_MV3)
-    "service_worker": "sw.js"
+    "service_worker": "sw.bundle.js"
 #endif
   },
 #if defined(GECKO)