Move camera code to its own file.
A bunch of refactoring; hit a circular import and decided to fix a bunch of mess that's been creeping up.
Finished refactoring for now.