Add initial MV3 support

In order to prepare the migration towards Manifest Version 3, this
change adds a MV3 browser target for Chromium (chromium_mv3) and another
one for Edge (edge_mv3), which will build the extension using MV3.

This CL also changes several things to fix some bugs in the MV3 version
of the extension:

- Adds //src/common/actionApi.js to target |chrome.browserAction| (MV2)
  and |chrome.action| (MV3) accordingly using the version-agnostic
  object |actionApi|.
- Adds //src/common/sessionStorage.js to wrap the
  |chrome.storage.session| object in the case of MV3, and polyfill it in
  the case of MV2. (The polyfill isn't perfect, since it stores the data
  under the window object of the current page, so different pages will
  have access to completely different storage areas, which are cleared
  once the page is closed, not once the extension stops running.
  However, this is fine for our case.)

As of now, the extension built with MV3 might have bugs. Thus, the MV3
variant will not be used for builds until it has been stabilized.

Bug: translateselectedtext:4

Change-Id: Ib525339c055237b32b7352c490fee86b21555ed6
diff --git a/src/common/sessionStorage_mv3.js b/src/common/sessionStorage_mv3.js
new file mode 100644
index 0000000..9def901
--- /dev/null
+++ b/src/common/sessionStorage_mv3.js
@@ -0,0 +1,9 @@
+export default class ExtSessionStorage {
+  static set(items) {
+    return chrome.storage.session.set(items);
+  }
+
+  static get(keys) {
+    return chrome.storage.session.get(keys);
+  }
+}