[jnigen] Further FFI improvements (https://github.com/dart-lang/jnigen/issues/254)
* Add DllMain lock initialization in windows
* release lock on second init check
* Use wrapper class instead of extensions.
* Rename GlobalJniEnv in C to `GlobalJniEnvStruct`, and `JniAccessors` to `JniAccessorsStruct`
* In dart, generate wrapper classes that store a pointer to above.
* Then generate methods which are semantically equivalent to the extensions in previous iterations.
* But internally, results of `asFunction` are cached to late field instead of being called again. (This is what ffigen does too).
* Do not generate extensions for local env & javavm types
* Remove -j
* Add --test-randomize-ordering-seed random
20 files changed