add avian.Machine.tryNative

This function allows you to call native code such that any
SIGSEGV/SIGBUS/SIGFPE/EXC_ACCESS_VIOLATION/etc. raised by that code is
transformed into a Java exception and thrown by tryNative.  Note that
this effectively results in a longjmp out of whatever function raised
the exception, so any C++ destructors or other cleanup code will not
be run.
Note: this was a bug that's been around forever and I only noticed it because I was working in this part of the code.  Not surprising that it never manifested itself -- it would only affect a thread trying to get a stack trace of another thread that was just about to throw an exception triggered by a signal, which is really hard to test for.  I don't even think it would have resulted in anything worse than an incorrect stack trace.