Modularised Level

The code for initialising and running a level is now properly segmented
inside Level. What was once Level, (the loaded in level data,) is now
called LoadedLevel. Level creates an instance of loadedLevel, while
Level1State (or whatever) creates and runs an instance of Level. This
means a new level state can be created very quickly, without copying
ludicrous amount of level operations code over.
Removed AudioManager

Initially I thought there were going to be a lot more reused sounds, but
it turns out most sounds are used by one entity, and the ones that arnt
are part of the level, which facilitates it's own way of loading in
sound files only once. This system is more hassle than it's worth, so i
removed it.

This does however mean that if there is a repeated sound, you have to
manage the memory yourself, but it's pretty trivial.