[Platform] Implemented legacy IJoystickDriver

LegacyJoystickDriver implements the legacy IJoystickDriver interface
(GameWindow.Joysticks) in terms of the new IJoystickDriver2 interface
(OpenTK.Input.Joystick).

This removes a large chunk of code from each platform backend, as they
no longer need to implement IJoystickDriver themselves. Additionally,
it adds support for device hot plugging which was previously missing.
[OpenTK] Added base IPlatformFactory implementation

PlatformFactoryBase provides a common base interface for platform
backends. Platform backends should inherit from PlatformFactoryBase in
order to reduce code duplication.
[OpenTK] Platform backends should inherit from PlatformFactoryBase

This reduces code duplication wrt deprecated interfaces and common
support code between backends.
[Linux] Added INotify bindings

These are not currently used.
Merge branch 'legacy_joystick' into linux_joystick
Merge branch 'develop' into linux_joystick
[X11] Removed IJoystickDriver from X11Joystick

Legacy IJoystickDriver support is now implemented through a
LegacyJoystickDriver instance.
[X11] Added INotify.cs to project files
[X11] Implemented joystick hotplugging

This is a work in progress.
[OpenTK] Suggest alternative to obsolete INativeWindow.InputDriver property
[Linux] Implemented joystick hotplugging
[OpenTK] Use LegacyJoystickDriver for IJoystickDriver implementation
[Linux] Implemented joystick guid detection
[OpenTK] Fixed legacy joystick hotplugging & events
[OpenTK] Fixed polling
[OpenTK] Protect against invalid axis/button ids
Merge branch 'linux_joystick' into develop