VirtualFileSystem now a singleton, only one mount can be active at a time

Since the current state of this code is that there can only be a single
virtual file system mounted at a time, convert VirtualFileSystem to a
singleton to make this fact clearer.

closes #3403 https://dev.guardianproject.info/issues/3403
update libsqlfs submodule to get new raw key API

libsqlfs now as separate methods for opening using raw key data, which
SQLCipher will use directly, or using a password, which SQLCipher will use
to derive a raw key with.

refs #3174 https://dev.guardianproject.info/issues/3174
expose new raw key API in Java, to work better with CacheWord

CacheWord generates the raw key based on a dynamic number of iterations of the
KDF, so that it doesn't take ridiculously long on old devices, but on new
devices has a reasonable number of KDF iterations.  The exposes that API into
IOCipher's Java interface for easy integration with CacheWord.

Also, using byte[] for storing passwords means that Java code can zero out the
memory after the password/key is no longer in use.  Strings are immutable in
Java, so the memory cannot be zeroed out. byte[] are very mutable, so they can
easily be zeroed out after use.  Therefore only accept the database key as a
byte[] to encourage people to wipe the key from memory when they are done with
it.

fixes #2254 https://dev.guardianproject.info/issues/2254
refs #3174 https://dev.guardianproject.info/issues/3174
ignore AllowBackup lint warning, this is a library project

While it is possible to set this in a library project, it will conflict
with the setting in the app that uses this library.  Therefore it should
remain unset here, and leave that up to the app.
add blank <application /> tag to placate the test framework demons

Getting the tests to run reliably is a black art...
purge dead code

This is all unneeded remnants from taking the code from the Android guts.
Some of this stuff might later be re-added, but it can easily be taken from
the Android guts again.  Right now its just filling up this code base with
clutter.

fixes #1655 https://dev.guardianproject.info/issues/1655
refs #1658 https://dev.guardianproject.info/issues/1658
add getter for VirtualFileSystem.setContainerPath()
alternate form of mount() that includes path to container file

In some situations, it'll make more sense to do a single call to mount()
with all relevant information rather than setContainer() then mount().
run ${ANDROID_HOME}/ndk-build as part of the Eclipse build process

ANDROID_HOME is the standard environment variable that points to the root
of the Android SDK.  I usually put it into /opt/android-sdk.
generate appropriate, named jars with `ant debug` and `ant release`

This adds a manifest to the jar which includes the official version, and
also generates a signed jar with `ant release`.
ant.properties is no longer needed, android.library=true is enough
update libsqlfs submodule to get sqlfs_instance_count

refs #3402 https://dev.guardianproject.info/issues/3402
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