Refactor macros a little to make them easier to understand
Remove usages of to_unsafe_ptr
Remove return value on the window close callback in line with the glfw api changes
Improve naming in preparation for adding messaging
Remove temporary fix for X11 and Win32 crash

This has now been fixed in GLFW: https://github.com/elmindreda/glfw/commit/aec952e8dce2bab1f71a11d4b554d58c816fa20f
Remove deprecated GLFW 2.x key names
Use spawn_sched to make spawning the task on the main thread cleaner
Add the option of using messaging instead of callbacks for event handling

The current implementation seems to work, but produces concerning error messages during runtime. See examples/messages.rs to see an example of this.
Use `msg.window` instead of `window`
Remove astronautical messaging craziness
Use constants in vector lengths
Remove usages of 'static' for methods
Use new lifetime syntax
Move extern symbol bindings to submodule
Simplify joystick function wrappers
Fix vector initialisation
Use new fixed-length vector syntax
Take advantage of fixes to cross-crate constant matching
Update obsolete syntax
Fix permissions