create mount/umount logic based on holding open a sqlfs instance

It turns out that IOCipher needs to have a mounted and unmounted state in
order to trigger when the key/password is zeroed out. So sqlfs_open() is
used to create the first sqlfs instance and keep it open.  The actual work
is done by sqlfs instances that are created on the fly for each thread.
That keeps it flexible so that a new sqlfs instance is automatically
instantiated whenever there is an IOCipher call in a new thread.

fixes #3402 https://dev.guardianproject.info/issues/3402
REBASE expose new raw key API in Java, to work better with CacheWord
sort out the exceptions thrown when mounting or unmounting
REWORD run ${ANDROID_HOME}/ndk-build as part of the Eclipse build process