Add new files logic to devserver and clean up AU E2E test to use it.

There's a couple nested things here:

1) Pipe files through the autotest-side of the devserver logic. I've gone ahead
and added 5 unittests to test this new workflow with various combos of
artifacts. The main thing here is the optional pass of archive_url + files to
the stage_artifacts methods. I've also added a convenience function to return
the url to any staged file on the devserver if you know the filename (which you
would if you are using files= API).

2) Use the new logic in AU E2E API and figure out the right URL's to pass to
stage artifacts from. This was a bit of refactoring to get right.
In order to allow me to serve any artifact I had to change a bit of of the
source version installation logic to allow me to update from any static url
(rather than one that must end in update.gz). This actually makes the
OmahaDevserver much more flexible and more Omaha-y.

BUG=chromium:267896
TEST=Unittests + tested with both an nmo + npo full run.

Change-Id: Ic490c7c0e7d76eb8c0416accefbe113b9c0bba32
Reviewed-on: https://gerrit.chromium.org/gerrit/65732
Reviewed-by: Chris Sosa <sosa@chromium.org>
Tested-by: Chris Sosa <sosa@chromium.org>
Commit-Queue: Chris Sosa <sosa@chromium.org>
5 files changed