[OpenTK] Added NativeWindowBase

This acts as a common base class to INativeWindow implementations and
can be used to reduce code duplication.
[Mac] Inherit from NativeWindowBase

This reduces code duplication significantly.
[Input] Added internal MouseDevice.Position getter
[OpenTK] Add On* methods to raise events
[Mac] Use On* methods from base class
[Platform] Inherit NativeWindowBase
[Platform] Added INativeWindow.Mouse* events
[Mac] Fixed cursor coords when CursorVisible=false
[Mac] Fixed initial window position

Cocoa sets the desktop origin at the bottom-left of the main screen,
with +y going up. OpenTK is setting the origin at the top-left of the
main screen, so we need to invert the y-axis.
[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.
[Input] Improved MouseState.ToString()
[X11] Removed legacy X11Input driver

Its functionality has been moved directly into X11GLNative and
X11KeyMap.
[Mac] Avoid calling into LegacyInputDriver
[Input] MouseDevice is now based on MouseState

This way we have a single state representation (MouseState), shared by
all mouse APIs and events.
[Examples] Hook both MouseDevice and Mouse events

They should give identical results.
[Platform] Remove lambdas
[Mac] Disable momentum scrolling and key pop-ups

We might wish to add an option to re-enable momentum scrolling, as this
might be useful to some applications for a more native feel.