recovery: Hide unmountable volumes from selection

* In volume manager, check if new volumes are mountable.

* Check volumes for mountable for inclusion into update list.

* Erase unmountable volumes from volumes vector for consistency with
  the item array.

Change-Id: I89ff6cc05a93afffe5e46b24d70fc368bccaf020
diff --git a/volume_manager/VolumeBase.h b/volume_manager/VolumeBase.h
index 6ec6e27..acfff45 100644
--- a/volume_manager/VolumeBase.h
+++ b/volume_manager/VolumeBase.h
@@ -82,6 +82,7 @@
     int getMountFlags() const { return mMountFlags; }
     State getState() const { return mState; }
     const std::string& getPath() const { return mPath; }
+    bool isMountable() const { return mMountable; }
 
     status_t setDiskId(const std::string& diskId);
     status_t setPartGuid(const std::string& partGuid);
@@ -127,6 +128,9 @@
     /* Flag indicating that volume should emit no events */
     bool mSilent;
 
+    bool mMountable;
+    virtual bool detectMountable();
+
     void setState(State state);
 
     DISALLOW_COPY_AND_ASSIGN(VolumeBase);