Renamed getComponentID to getComponentTypeName

This is a more descriptive name for what you are getting. ID implies a
number.
Cleaned and reviewed FPSCamera
Renamed ViewMover to CameraMover

This better describes its meta function.
Changed how BulletMover works

It now operates on the transform directly. FPSCamera keeps a reference
to it to inform the mover of input, but not the other way around.

This changed required lots of moving of methods to more base classes to
make it a bit more generic.
Some error checking and formatting
Added specular component
Merged upstream