Some improvements over v2:
- You can access movementXY on pointer without needing to perform a manual `resetMovement()`
- Fixes bug where `releasePointerLock` would unregister event listeners before a final `pointerLockChange` could be called. Results in mouse.locked not having the right state and a final 'POINTER_LOCK_CHANGE_EVENT' not firing.
Split events out into Game Object and global Pointer ones. Removed redundant topOnly checks (as the source array is already filtered), removing use of 'childOn' functions. Normalizing event data.