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.

Change-Id: Ie9d07dda2d773312e55be3c0ab7c9e5b737be18b
diff --git a/Android.mk b/Android.mk
index acedd5c..617737d 100644
--- a/Android.mk
+++ b/Android.mk
@@ -162,6 +162,7 @@
     common/hash_calculator.cc \
     common/http_common.cc \
     common/http_fetcher.cc \
+    common/file_fetcher.cc \
     common/hwid_override.cc \
     common/libcurl_http_fetcher.cc \
     common/multi_range_http_fetcher.cc \
@@ -902,6 +903,7 @@
     common/certificate_checker_unittest.cc \
     common/cpu_limiter_unittest.cc \
     common/fake_prefs.cc \
+    common/file_fetcher_unittest.cc \
     common/hash_calculator_unittest.cc \
     common/http_fetcher_unittest.cc \
     common/hwid_override_unittest.cc \