Adding support to GLTF shader and program format

Specification
[GLTF Shader](https://github.com/KhronosGroup/glTF/tree/master/specification#shader)
[GLTF Program](https://github.com/KhronosGroup/glTF/tree/master/specification#program)

Up next is to support the semantic naming which will add the ability to bind vertex attributes to specific indices. This will fit with the generated meshes and will lead the way to landing the spectre_mesh library.