Engine code commit!

All code for the engine excluding all external libraries. The externals
will be commited separately or stored in another repository for
tidiness. There is still a lot of test/experimental code scattered
throughout this project. It needs to be cleaned up but in an effort to
get things uploaded this will do for now.