Implement workflow execution UI and logic

This CL adds a provisional workflow execution UI (which will need to be
thoroughly improved in the future), and most importantly the logic for
running workflows and actions inside workflows.

Bug: twpowertools:74
Change-Id: I94944a623a2411bef9d2b5244fea707e69a49790
diff --git a/src/injections/batchLock.js b/src/injections/batchLock.js
index 4fb3af8..6d7a1e5 100644
--- a/src/injections/batchLock.js
+++ b/src/injections/batchLock.js
@@ -1,15 +1,7 @@
 import {CCApi} from '../common/api.js';
-import {parseUrl} from '../common/commonUtils.js';
+import {parseUrl, recursiveParentElement} from '../common/commonUtils.js';
 import {getAuthUser} from '../common/communityConsoleUtils.js';
 
-function recursiveParentElement(el, tag) {
-  while (el !== document.documentElement) {
-    el = el.parentNode;
-    if (el.tagName == tag) return el;
-  }
-  return undefined;
-}
-
 // Source:
 // https://stackoverflow.com/questions/33063774/communication-from-an-injected-script-to-the-content-script-with-a-response
 var contentScriptRequest = (function() {