Class structure refactor, adding in interfaces for factories and asset caches.

Factories make everything harder and more abstract. Boo. Abstracting.