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 #1713 https://dev.guardianproject.info/issues/1713
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_NDK}/ndk-build as part of the Eclipse build process

ANDROID_NDK is a pseudo-standard environment variable following the standard
ANDROID_HOME env var.  ANDROID_NDK points to the root of the Android NDK.  I
usually put it into /opt/android-ndk.
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 to get sqlfs_instance_count and fixed open/close

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
sort out the exceptions thrown when mounting or unmounting
reuse isMounted() method for internal mount checks
expose password/key changing methods in Java

fixes #3174 https://dev.guardianproject.info/issues/3174