Fetch local files asynchronously.

This patch implements a new fetcher that only handles local files.
While libcurl supports file:// urls, the stream can't be suspended when
accessing local files.

This new FileFetcher is based on the brillo::FileStream class which
properly handles the asynchronous reads from regular files.

Bug: 28866512
TEST=Added unittest. Deployed an update from a file:// URL.

(cherry picked from commit 2c131bbf81d8c02ade163b939c96e44aa93765e9)

Change-Id: I9949a0f214de992c2fd86c1d73aca1c1792f0de0
diff --git a/update_engine.gyp b/update_engine.gyp
index 3a1d635..1bd83b1 100644
--- a/update_engine.gyp
+++ b/update_engine.gyp
@@ -484,6 +484,7 @@
             'common/certificate_checker_unittest.cc',
             'common/cpu_limiter_unittest.cc',
             'common/fake_prefs.cc',
+            'common/file_fetcher.cc',  # Only required for tests.
             'common/hash_calculator_unittest.cc',
             'common/http_fetcher_unittest.cc',
             'common/hwid_override_unittest.cc',