Memory improvements (most notably TextureManager).

Introduces TextureManager, which now takes care of the loading and referencing of textures to be used. This ensures that each texture only gets loaded into memory once and can be reused.

Appears to reduce memory footprint by ~10%.