Pulled varargs test out of the loop to avoid checking on each parameter

The Method#isVarargs method is now referenced statically to avoid costs
of looking it up on each native method call with at least one parameter.
This also can save a lot of memory, since on every Class#getMethod()
call a new Method object is returned.

Added null check

uses the double-checked locking to speed up subsequent calls to the same
function.

Made Function$Handler$FunctionInfo immutable class to make double check
locking work correctly.

Added description of changes to CHANGES.md
Merge branch 'master' into experimental-improvements

Conflicts:
	src/com/sun/jna/Function.java
	src/com/sun/jna/Library.java
Reordered parameters
Reduced visibility of new method to avoid extended public API