Create a FuseDataProvider base class

The fuse data provider for adb/sdcard shares common code and structures.
This cl creates a FuseDataProvider base class and provides
implementations for adb and sdcard.

In the follow cls, we can kill the provider_vtab struct; and also add
another implementation to parse a block map file and provides data.

Test: unit tests pass, sideload a package, apply a package from sdcard
Change-Id: If8311666a52a2e3c0fbae0ee9688fa6d01e4ad09
diff --git a/recovery.cpp b/recovery.cpp
index 0074b64..63960eb 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -56,7 +56,7 @@
 #include "common.h"
 #include "device.h"
 #include "fsck_unshare_blocks.h"
-#include "fuse_sdcard_provider.h"
+#include "fuse_sdcard_install.h"
 #include "fuse_sideload.h"
 #include "install.h"
 #include "logging.h"
@@ -709,6 +709,7 @@
   ui->ShowText(true);
 }
 
+// TODO(xunchang) move apply_from_sdcard() to fuse_sdcard_install.cpp
 // How long (in seconds) we wait for the fuse-provided package file to
 // appear, before timing out.
 #define SDCARD_INSTALL_TIMEOUT 10