Macro for extension functions

This pr adds a macro for automatically loading the function pointer for an extensions. This is necessary for #32  to work properly across machines. 

It currently still has the following issues 

- [ ] This only works for OpenCL 1.0-1.1 for OpenCL 1.2 clGetExtensionFunctionAddress has been changed to clGetExtensionFunctionAddressForPlatform
- [ ] OpenCL only guarantees that this will work when the Extension from which the function is actually exists.

It also raises the question how we handle different OpenCL versions.
Maybe we need some conditional loading/code generation on run time via a check in an `__init__` function if the platform only supports OCL1.1 or if it support support OCL1.2.

Also conditional modules like JuliaLang/Julia#6195 would be helpful.