Added support for loading shaders from files.

Reorganized the loading of shaders so that they can be read from files.
Assets are now loaded at the start of the program, before the world is
created, and before rendering begins.