Devserver with XBuddy: Have update RPC use XBuddy.

Restructure how the devserver responds to a ChromeOS device requesting
an update, querying XBuddy if a path doesn't immediately resolve to an
update payload.

i.e. when a device pings a devserver with
update_engine_client --omaha_url=host:port/update/{some/path/sequence}
Devserver will check in its static directory under
static/some/path/sequence for an update payload.

Devserver will attempt each of the following operations to get an update
until one is successful:
1. Find an existing update in that directory.
2. Generate an update from an existing test image in that directory.
3. Use XBuddy to resolve the path to an image, generate an update from that
  image.
4. Download the corresponding test image from google storage to that
  directory.

Full documentation under the docstring in ./devserver.py:update

Also:
- Maintain the default behavior of responding to an empty update call
  (i.e. --omaha_url=host:port/update)
  with the update package of the latest built local image.

- Move handing of explicit XBuddy paths from devserver.py -->
  autoupdate.py

- Modify existing behavior of --image and --forced_payload flags to
  instead copy to dedicated directories and have devserver handle them
  from there.

- Ensure that if a board is specified in the update XML, it overrides
  any defaults the devserver may have.

- Unify interface for xBuddy.Get and XBuddy.Translate

- Update unittests for devserver and autoupdate modules.

BUG=chromium:264045
TEST=autoupdate_unittest.py
TEST=manual, using update_engine_client

Change-Id: I188dfe670960ae2d1fec4fc5b801f993de879213
Reviewed-on: https://gerrit.chromium.org/gerrit/64393
Reviewed-by: Joy Chen <joychen@chromium.org>
Tested-by: Joy Chen <joychen@chromium.org>
Commit-Queue: Joy Chen <joychen@chromium.org>
diff --git a/autoupdate_lib.py b/autoupdate_lib.py
index 36be0ca..33e1be3 100644
--- a/autoupdate_lib.py
+++ b/autoupdate_lib.py
@@ -173,7 +173,8 @@
 
   Args:
     request_dom: an xml string containing the update request.
-  Returns tuple consisting of protocol string, app element, event element and
+  Returns:
+    Tuple consisting of protocol string, app element, event element, and
     update_check element.
   Raises UnknownProtocolRequestedException if we do not understand the
     protocol.