Renderthread shader module and its GL implementation

This PR introduces proper data types and structures to hold all shader meta information. This is supposed to be stored on the renderthread side. When a draw call is issued, the data provided in vertex attributes and shader parameter is to be matched against the requirements described in ```ProgramMeta``` structure. This meta data covers all essential bits, like: vertex attributes, default block uniforms, uniform blocks, and samplers.