Lots of refactoring. Also it's probably broken

I was making a lot of changes to the Camera class to try and implement depth of
field. I don't think it worked, but it's still rendering.