Make platform and render modules free-standing crates and make gfx a facade

This will force us to make the modules less mutually dependent (you can't do mutually recursive imports cross-crate).
Should this be behind the config gate?