Add shader struct (incomplete patch)

Rendering can't really be tested until we get some internal
engine infrastructure. We definitely need the engine struct
to maintain state information like currently bound shader, etc.