Added initial support for different shader languages.

Instead of a `&[u8]` or `Vec<u8>`, shaders are now represented by a
`ShaderSource` type that can contain different shader source
languages. The device then selects the right one at runtime.
Merge pull request #72 from Kimundi/compat_gl_shader

Added initial support for different Shader languages.
Implemented mesh constructor, strong attribute typing into device module.
Refactored attribute types. Implemented proper binding on GL side.
Implemented vertex attrib type verification against the shader input type