Start changing over *** doesn't compile ***

Re-create the new base entity class
Add the passthrough entity *** doesn't compile ***
Update the cmake files list
Add a branch entity *** doesn't compile ***

Branch entities store other entities inside of them
Add some stuff to messagereceivers

Add a "remove child" method, and make it so that going too far up (with
".."s) doesn't cause segfaults.
Add passthrough-able message receivers

Some message receivers need the ability to not be part of a message
receiver chain (i.e. to not be accessible via ".."ing). This change adds
that ability, while still allowing them to be added to parents.
Make passthrough entities use passthrough messages
Add branch entities to the list of files
Branch entities register children as message child
Move loader classes to loader/
Offload loading facilities to a new class
Add a way to do resource loading with a cache
Add a shader loader
Add the shader loaders to the loader class
Make GLProgram loading more general

Now, you can provide it with a vector of shaders, and it will link and
compile with all of them.
Add the loader files to the file list
Add in a LoaderCache which performs cached loading
Add path function to get the directory of a file
Move program loading out of the loader cache
Add a new cache to load programs from