Merging our changes in

I deleted our old OpenTK repo and forked yours. All our changes were saved as patches that I re-applied to the forked version and I figured it would be best to merge it all up to yours.

Most of our changes are to the math classes and as far as I've tested, it's all perfectly stable. I know that I have write access to your repo, but I figured for larger changes it would be better to have at least one other person review it before it gets merged in...

Changes:

 - Optimized Matrix3/3d/4/4d (mostly in the same way as d0cd45e6)
 - Added a perpendicular dot product method to Vector2 ([OpenTK issue #2769](http://www.opentk.com/node/2769))
 - Added a ref/out overload for Matrix4.Invert
 - Added GL.UniformMatrix3/3d/4d helper methods
 - Started working on the new gamepad input API
 - Added more swizzle properties to all the vector classes.