Refactor rendering into IRenderer and IRenderable.Render.

Needs a massive clean up still, however the basics are in place.