[Platform] Refactored INativeWindow backends

All INativeWindow implementations are now derived from
NativeWindowBase. They no longer implement legacy IInputDriver
themselves, but rather rely on LegacyInputDriver provided by
NativeWindowBase for compatibility. They also implement the new Mouse*
events.
[SDL] Corrected SDL_Mouse* event structs
[Platform] Added support for horizontal wheel
[Platform] Improved mouse interface

- The complete mouse state is now available in mouse events
- Horizontal wheels are now supported
- MouseState now takes up less memory and has a simpler internal
implementation.