Major build system overhaul.

Using a custom make tool.
Loading shader code at runtime.
Reorganized subprojects.
Using a common 'shared' directory.