reproducible build process

These commits, in conjuction with the utility `faketime`, make for a reproducible, deterministic build process so that others can exactly reproduce the official release builds.  It includes extra metadata in the jar file about which Java, SDK, and NDK were used to make the given build.  This makes it easy to verify that the release build came only from the source in the git repo, and nothing was injected in during the build process.

You can get faketime from various package systems:

     apt-get install faketime
     brew install libfaketime
     fink install libfaketime
     port install libfaketime