[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.
Merge branch 'legacy_joystick' into linux_joystick