Add annotations to optimize copying data in to/out of native code, and correct length parameters to be unsigned long long

There are some optimization annotations available when transferring data to/from native code (generally only applies to java heap objects - e.g. arrays).

* [@In](http://jnr.github.com/jnr-ffi/apidocs/jnr/ffi/annotations/In.html) means data is only copied from java memory to native memory, and is *not* copied back from native memory to java memory after the call.
* [@Out](http://jnr.github.com/jnr-ffi/apidocs/jnr/ffi/annotations/Out.html) means data is only copied from native memory to java memory after the call, but is *not* copied from java to native memory before the call.

This PR also corrects the 'length' parameter type of a few methods - the header shows them as unsigned long long, which needs the [@u_int64_t](http://jnr.github.com/jnr-ffi/apidocs/jnr/ffi/types/u_int64_t.html) annotation to ensure the width is correct.