Camera no longer inherits from Object

Making Camera an Object meant that if Object was abstract then Camera
has to have stubs for every abstract method. Separating them out means
camera can be much simpler and Object can be as abstract as it should
be.