Dispose on unload

* Invoke `Native.dispose()` when JNA's native library is unloaded. 
* Added disposal of all `Memory`, `CallbackReference`, and registered Direct mappings