Reland "Store metadata about updates in a file alongside with payload."

Relands CL: I3695b0903514eb6840e88810b8546fdca690819e

This original CL had an issue where we only generated metadata in the root
folder. This means updating twice using image_to_live with different images
would break updates.

I've fixed this in the second patch. Please compare P1 vs P2 as P1 is just
the re-landed version of I3695b0903514eb6840e88810b8546fdca690819e. I've
also fixed a bunch of pylint warnings that are now required per upload.

BUG=chromium-os:36990
TEST=Unittests on all changed code, pylint on all changed files, ran update
on x86-generic image using both the serve_only and generate latest workflows.
Ran autoupdate_EndToEndTest

Change-Id: I6bb65b23a34f071e388a4e522fb0fb42eae8781b
Reviewed-on: https://gerrit.chromium.org/gerrit/42271
Tested-by: Chris Sosa <sosa@chromium.org>
Reviewed-by: Gilad Arnold <garnold@chromium.org>
Commit-Queue: Chris Sosa <sosa@chromium.org>
diff --git a/build_artifact.py b/build_artifact.py
index 3690390..1139dfe 100644
--- a/build_artifact.py
+++ b/build_artifact.py
@@ -23,6 +23,7 @@
 STATEFUL_UPDATE = 'stateful.tgz'
 TEST_IMAGE = 'chromiumos_test_image.bin'
 TEST_SUITES_PACKAGE = 'test_suites.tar.bz2'
+AU_SUITE_PACKAGE = 'au_control.tar.bz2'
 
 
 class ArtifactDownloadError(Exception):
@@ -45,6 +46,7 @@
       install_path: Final destination of artifact.
       synchronous: If True, artifact must be downloaded in the foreground.
     """
+    super(BuildArtifact, self).__init__()
     self._gs_path = gs_path
     self._tmp_staging_dir = tmp_staging_dir
     self._tmp_stage_path = os.path.join(tmp_staging_dir,
@@ -157,7 +159,7 @@
 class DebugTarballBuildArtifact(TarballBuildArtifact):
   """Wrapper around the debug symbols tarball to download from gsutil."""
 
-  def _ExtractTarball(self):
+  def _ExtractTarball(self, _exclude=None):
     """Extracts debug/breakpad from the tarball into the install_path."""
     cmd = 'tar xzf %s --directory=%s debug/breakpad' % (
         self._tmp_stage_path, self._install_path)