update JNI build for GNU/Linux, Windows, and a partial Mac OS X

The same Makefile is now setup to handle multiple platforms.  It currently
works with Debian/Ubuntu/Mint/etc. and Windows with MinGW.
generate and build against JNI headers so definitions match

javah generates C headers from the Java sources, so they provide a way to
check that the C JNI code matches the Java definitions.  This commit
enables that functionality.