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/docs/developers/build.md b/docs/developers/build.md
index 76a1175..9fe8e75 100644
--- a/docs/developers/build.md
+++ b/docs/developers/build.md
@@ -1,41 +1,38 @@
 # Build the extension
 A zip file with the contents of the extension, which can be uploaded to the
-Chrome Web Store and addons.mozilla.org, can be created with any of the
-following procedures (make sure to [install Go](https://golang.org) before
-building the extension, as it is needed during the build):
+Chrome Web Store and addons.mozilla.org, can be created by following these
+instructions. (make sure to [install Go](https://golang.org) before building the
+extension, as it is needed during the build).
 
-## Using the release.bash script
-Run `bash release.bash -h` in order to learn how to use this command. To
-summarize, the command accepts the `--channel` and `--browser` flags (or their
-short versions `-c` and `-b`).
+The last section explains how to build the extension automatically when you
+change the source code.
 
-As an example, if you wanted to create a ZIP file of the beta-branded extension
-targeted for Firefox, you would run `bash release.bash -c beta -b gecko`.
-
-## Using make
-You can also use _make_ to build the extension. This is just a wrapper for the
-`release.bash` command.
-
-Run `make all` to build the extension for all the available channels and
+## Build the extension as a zip file
+Run `make release` to build the extension for all the available channels and
 browsers. You can also run `make {target}` where `{target}` is one of the
-following: `chromium-stable`, `chromium-beta`, `chromium-mv3-beta`,
-`gecko-stable`.
+following: `release_chromium_stable`, `release_chromium_beta`,
+`release_gecko_stable`.
 
-Run `make clean` to clean all the release files (this removes the `out` folder,
-which is where the release files are saved).
+Run `make clean_releases` to clean all the release files (this removes the `out`
+folder, which is where the release files are saved).
 
-## Load the extension "without" building it
+Take a look at `Makefile`, you'll find other targets for _make_ which do other
+interesting things (like `clean`, for instance).
+
+## Build the extension continously with webpack development mode
 If you're developing the extension, you might want to load it into your browser
-without having to constantly build it after each change. In order to do that,
-you'll only have to manually generate the manifest each time you change the
-`template/manifest.gjson` file (or only once if you don't change it, and once
-every time you pull new changes to your git clone).
+without having to constantly build it manually after each change. In order to do
+that, you can run `make serve_chromium`, `make serve_chromium_mv3` or
+`make serve_gecko` depending on the type of continuous build you want.
 
-In order to do that, run `go run generateManifest.go {browser}`, where
-`{browser}` is `CHROMIUM`, `GECKO` or `CHROMIUM_MV3`, and this will generate the
-`manifest.json` file for the specified browser in the `src` directory. Now, you
-can load the `src` folder directly in the browser in order to import the
-extension.
+This will run webpack with watch mode and continuously serve a fresh version of
+the compiled extension at `dist/{BROWSER}`, where `{BROWSER}` depends on the
+target you selected for _make_. You can load this folder in Chrome by going to
+`chrome://extensions` and selecting "Load unpacked".
+
+Keep in mind that while the extension is continuously built, it is not
+automatically being loaded into Chrome. You'll have to reload the extension
+manually in Chrome (but at least you won't have to both build and reload it).
 
 ## About the _Chromium MV3_ target
 Chromium is working in a