Added events for KeyUp and KeyDown

The KeyUp and KeyDown methods are very important for low level keyboard
access but in MonoGame the general solution of overriding the view
cannot be done so I expose both as events.
Revert "Added events for KeyUp and KeyDown"

This reverts commit c4f6d7a84a181ce1c8616913f9126639fd15839e.
[MacOS] Added an optional Delegate to GameWindow

Added an optional Delegate to GameWindow to allow custom GameWindow
implementations to be used.
[MacOS] Changed Delegate to CreateWindowDelegate
Fix for WinGL initialising GraphicsCapabilities

Seems that calling `GL.GetInteger(GetPName.MaxTextureSize, out maxTextureSize);` from a static method causes a null reference exception in OpenTK. I've worked around it by caching the _maxTextureSize in Graphics device. I've also move the getting of graphics extensions to their own method and put it in the constructor with other 'GL.GetInteger' calls rather than `Initialise()`
Merge pull request #1256 from SamuelEnglard/develop3d

[MacOS] Added an optional Delegate to GameWindow
Merge pull request #1260 from Aranda/fix_wingl_graphicscapabilities

Fix for WinGL initialising GraphicsCapabilities
Fixing incorrect using for MONOMAC build
Merge pull request #1268 from Aranda/fix_macos_build

Fix MONOMAC build by adding missing using statement
Add a simple workaround for SpriteBatcher leaking a huge amount of vertex buffer memory on PlayStation Mobile (issue #1261).