Added ToolkitOptions class

ToolkitOptions allows the user to influence the implementation of
OpenTK.Platform at runtime.
Refactored environment config detection

This significantly cleans up the startup sequence on all platforms:
- X11 is not detected on non-Linux platforms unless the user explicitly
requests it
- Supports selection of platform abstractions (SDL) vs native
implementations.
- Returns correct flags on Android and iOS.

This contains a semantic change: OpenTK.Configuration will not return
correct values until OpenTK.Toolkit.Init() has been called, either
directly or indirectly (e.g. by creating a window.)
Cleaner startup sequence

OpenTK.Toolkit will now initialize OpenTK.Configuration and
OpenTK.Platform.Factory explicitly. It can also receive an optional
ToolkitOptions parameter to influence the OpenTK.Platform implementation
that will be chosen. Finally, it explicitly implements IDisposable to
clean up after itself.
GLControl requires native backend

SDL does not currently support embedding into Windows Forms (this is an
upstream limitation.) To ensure that existing WinForms applications
continue to function even if SDL is installed, GLControl will now try to
initialize OpenTK with a native backend. The user can still override
this behavior using OpenTK.Toolkit.Init(ToolkitOptions), as normal.
Hack for GLControl support

Added a hack to allow GLControl examples to run even if SDL is
installed.
Support multiple overloads

It is now possible to specify multiple overloads for the same function.
This is helpful for maintaining backwards compatibility with previous
releases.
Added Version20 overload to StencilFuncSeparate

Compatibility fix for OpenTK 1.0
Corrected option parsing
Re-added WindowHandle property

There are projects that use reflection to access
*WindowInfo.WindowHandle directly. This change ensures we don't break
them.
Added GetDeviceCaps (windows platform)

We will use this method to read out the logical DPI of the monitor and
scale window elements accordingly.
Improved WinGLContext initialization

Cleaned up and added debugging information to the temporary context
construction in WinGLContext. Simplified WinGraphicsMode constructor.
Corrected core profile selection

According to GLX_create_context, the correct flag for a core profile is
GLX_CONTEXT_CORE_PROFILE_BIT_ARB.
Cleaned up context profile selection

Added support for WGL_create_context profiles and added methods for the
selection of context flags and profile.
Scale window size on hi-dpi mode

Follow high-dpi guidelines for scaling a window on high-dpi modes.
Do not scale in normal-dpi modes
Correctly set generator mode.
Improved override/overload lookup

The lookup for function overrides and overloads now tries to work
around extension case mismatches (e.g. IBM vs Ibm). This fixes a few
specific cases of missing overrides.
New Add() methods analogous to FunctionCollection
Clear qualifier path when changing type

This fixes a bug where overriding an enum parameter with a non-enum
parameter would result in the wrong qualifier path.
ES11 compatibility overloads (WIP1)