1.2.0-alpha1 - do not merge

This PR synchronizes OpenTK with the Xamarin version (https://github.com/mono/opentk). The result is fully functional, but requires some additional work regarding API compatibility. This PR is created now to ensure testing by the CI server.

New features:
- Support for Xamarin.Android
- Support for Xamarin.iOS
- OpenGL ES bindings for Android, iOS, ANGLE and Linux are now generated from the Khronos xml registry. This resolves all const-correctness issues (differing ref/out parameters).
- OpenCL bindings for versions 1.0, 1.1, 1.2 and 2.0
- The binding generator can now generate structures with fields, static methods and extension methods. This functionality is currently used in the OpenCL and Wayland bindings. There is a good chance that it will also be used for OpenGL 5.0, whenever that is released.
- The binding generator can now cope with more mathml constructs. This translates into better documentation for OpenGL, OpenGL ES and OpenCL.

Known issues:
- The ABI must be bumped to 1.2.
- Only a subset of the OpenTK API is supported on Android and iOS. This will be improved in the future.
- A number of OpenGL ES enumerations are present in downstream headers but missing from the Khronos registry. These enumerations are **not** actually used by any OpenGL ES function, but they must still be added to maintain backwards compatibility.
- OpenGL ES tokens starting with a number are translated differently from mono/opentk. This affects exactly 2 tokens (3dfx_*) and should be fixed before merging.
- OpenCL should not use bindings with unsafe pointers. This is because OpenCL often requires null parameters, which cause conflicts between array and pointer parameters. 
- We still need OpenCL examples:
   - Buffers
   - Texture samplers
   - Synchronization
   - Events
- We still need Android and iOS examples.