Lazzy refined strategies

refine strategies
* implementations are singletons now
* implementations can reuse other implementations (e.g., legacy)
* implementations are initialized lazy by strategies
* strategy is specified via enum classes of api classes that are using the implementations
  (note: implementations should be changed at runtime with care...):
  ```Shader::hintIncludeImplementation(...)```
* started placing some ```using namespace gl``` in most modified files
* added singleton template to globjects-base that is used for all implementations