Simplify rendering pipeline.

We don't need to overcomplicate things. We should try to keep our datatypes as simple as possible... not more than three types per constructor. In that vein, shaders should be a linked program with a list of shader variables. Materials should be a shader with a mapping of shader variables to already set variables. A render target is going to be a type of texture, and we will render the
proper camera when the target needs to be set. Hence, the target will need to specify how to
set up the proper values for rendering (camera variables, etc)