refactor the jni layer

we do not wish to have to dispose minor objects like references.
instead, we want immutable objects that have no native backing and
can simply be handled by the jvm's gc.  thus, the jni layer creating
objects directly seems superior.  apply this pattern to jni across the
board.
win32 support

Move the libjagged natives over to CMake for familiarity.  Minor fixes for
MSVC support.  Remove natives; users should build their own (for now).
For distracted git users.

'git clone' followed by 'cd src/main/native; make' is enough to build the native project. libgit2 submodule is downloaded automatically if it doesn't exist
Automatically update the libgit2 submodule on build
Better initialisation of the tests, in particular with Maven
Merge pull request #1 from ludovicc/master

Easy build from fresh project checkout
Merge pull request #2 from ludovicc/feature/robust-test

Better initialisation of the tests, in particular with Maven
Use Branches instead of References in the common case
iterable references
Add more error types
Fix compiler warnings
Add setup script for new developers
Explicit version for Maven surefire plugin