Marshal strings as UTF8 (affects #18)

Starting with OpenGL 4.2, strings passed to GL.ShaderSource are allowed
to contain multi-byte characters in comments (issue #18). This patch
modifies the marshaling code to use UTF8.GetBytes in order to marshal
strings, instead of Marshal.StringToHGlobalAnsi().
Implemented SDL2 Joystick and GameController events
Use SDL2 event API for joystick devices
Implemented GameController API bindings
Updated internal IGamePadDriver interface
Implemented GamePadButtons
Implemented new GamePad interface (WIP)
Marshal strings as UTF8 (affects #18)

Starting with OpenGL 4.2, strings passed to GL.ShaderSource are allowed
to contain multi-byte characters in comments (issue #18). This patch
modifies the marshaling code to use UTF8.GetBytes in order to marshal
strings, instead of Marshal.StringToHGlobalAnsi().
Merge branch 'utf8' of https://github.com/opentk/opentk into utf8
Corrected the entrypoint for wglChoosePixelFormat
Use opengl32 instead of gdi32 throughout

Since we are dynamically loading opengl32.dll, we are supposed to use
the wgl version of functions that exist in both opengl32 and gdi32 dlls.
Minor code cleanup

No need to wrap Wgl.DescribePixelFormat, just call it directly.
Load opengl32.dll before gdi32.dll

According to
http://stackoverflow.com/questions/199016/wglcreatecontext-in-c-sharp-failing-but-not-in-managed-c,
opengl32.dll must be loaded before gdi32.dll. Affect issue #19.
Use gdi32 implementations of functions

Several functions are defined in both gdi32 and opengl32. Using the
opengl32/wgl versions did not appear to help with issue #19. Let's use
the gdi32 version instead, as suggested here:
https://www.opengl.org/wiki/Platform_specifics:_Windows#The_WGL_functions
Minor code cleanup
Fixed GetModesARB implementation

The correct way to query number of available pixel formats is to use
Wgl.Arb.GetPixelFormatAttrib(NumberPixelFormatsArb), not
Wgl.Arb.ChoosePixelFormats. This fixes an issue where Intel drivers
would fail to report any pixel formats in GetModesARB, even when
WGL_ARB_pixel_format is supported.
Cleaned up temporary context construction

The temporary context is now retained until the actual context has been
constructed. If we don't do this, then WGL_ARB_create_context may fail
to work correctly on specific GPUs (e.g. Intel). This may affect issue
#19.
No point in using 16bpp color
Replace Wgl.GetCurrentDC with cached dc
 with
Threads with message pump require STA comparment

May affect issue #19