Update devserver to support downloader other than from Google Storage

Main changes:
1. Restructure artifact wrappers to support both CrOS and Android artifacts.
2. Support different downloaders in devserver.py.
3. Add LaunchControlDownloader class, the functions are to be implemented.

BUG=chromium:512668
TEST=run_unittests, devserver_integration_test.py, guado_moblab (au and dummy)
cros flash and cros stage to guado moblab

Change-Id: Ia350b00a2a5ceaeff6d922600dc84c8fc7295ef9
Reviewed-on: https://chromium-review.googlesource.com/301992
Commit-Ready: Dan Shi <dshi@chromium.org>
Tested-by: Dan Shi <dshi@chromium.org>
Reviewed-by: Dan Shi <dshi@chromium.org>
diff --git a/artifact_info.py b/artifact_info.py
index c1052d2..3e63c49 100644
--- a/artifact_info.py
+++ b/artifact_info.py
@@ -70,6 +70,27 @@
 # The factory test image.
 FACTORY_IMAGE = 'factory_image'
 
+#### Android artifacts. These are in a different namespace from the above. ####
+
+# Various android images stored in a zip file (including boot and system).
+# For example, shamu-img-2284311.zip contains boot.img, cache.img, recovery.img,
+# system.img and userdata.img. fastboot can use the zip file to update the dut
+# in a single command. Therefore, devserver does not unzip the zip file to avoid
+# unnecessary load on the devserver.
+ANDROID_ZIP_IMAGES = 'zip_images'
+
+# Radio image.
+ANDROID_RADIO_IMAGE = 'radio_image'
+
+# Bootloader image.
+ANDROID_BOOTLOADER_IMAGE = 'bootloader_image'
+
+# fastboot, utility to flash image to Android device.
+ANDROID_FASTBOOT = 'fastboot'
+
+# Test zip file for Android build, e.g., shamu-tests-2284311.zip
+ANDROID_TEST_ZIP = 'test_zip'
+
 # In general, downloading one artifact usually indicates that the caller will
 # want to download other artifacts later. The following map explicitly defines
 # this relationship. Specifically: