exFAT improvements, fixes

Move Exec_Cmd to libcrecovery __popen
Provide opt out build flag for exFAT
Default fstype to exfat on external storage if exfat support is
present and fstype is vfat or auto
Fix invalid unmount errors
Improve handling of unencrypted sdcards on Samsung devices
diff --git a/Android.mk b/Android.mk
index 795b19d..3cfd1fb 100644
--- a/Android.mk
+++ b/Android.mk
@@ -62,7 +62,7 @@
 LOCAL_STATIC_LIBRARIES :=
 LOCAL_SHARED_LIBRARIES :=
 
-LOCAL_STATIC_LIBRARIES += libmtdutils
+LOCAL_STATIC_LIBRARIES += libmtdutils libcrecovery
 LOCAL_STATIC_LIBRARIES += libminadbd libminzip libunz
 LOCAL_STATIC_LIBRARIES += libminuitwrp libpixelflinger_static libpng libjpegtwrp libgui
 LOCAL_SHARED_LIBRARIES += libz libc libstlport libcutils libstdc++ libmincrypt libext4_utils libtar
@@ -282,10 +282,7 @@
     $(commands_recovery_local_path)/crypto/cryptsettings/Android.mk \
     $(commands_recovery_local_path)/crypto/cryptfs/Android.mk \
     $(commands_recovery_local_path)/libcrecovery/Android.mk \
-    $(commands_recovery_local_path)/twmincrypt/Android.mk \
-    $(commands_recovery_local_path)/exfat/mkfs/Android.mk \
-    $(commands_recovery_local_path)/fuse/Android.mk \
-    $(commands_recovery_local_path)/exfat/libexfat/Android.mk
+    $(commands_recovery_local_path)/twmincrypt/Android.mk
 
 ifeq ($(TW_INCLUDE_CRYPTO_SAMSUNG), true)
     include $(commands_recovery_local_path)/crypto/libcrypt_samsung/Android.mk
@@ -295,8 +292,11 @@
     include $(commands_recovery_local_path)/crypto/fs_mgr/Android.mk
 endif
 
-ifeq ($(TW_INCLUDE_FUSE_EXFAT), true)
-    include $(commands_recovery_local_path)/exfat/exfat-fuse/Android.mk
+ifneq ($(TW_NO_EXFAT), true)
+    include $(commands_recovery_local_path)/exfat/exfat-fuse/Android.mk \
+            $(commands_recovery_local_path)/exfat/mkfs/Android.mk \
+            $(commands_recovery_local_path)/fuse/Android.mk \
+            $(commands_recovery_local_path)/exfat/libexfat/Android.mk
 endif
 
 commands_recovery_local_path :=