Camera system

This pull request allows the camera to have more than one point of view and to follow any object (a "target") in the scene via the `targetPath` property.

It also pulls a lot of functionality into the camera itself that used to be done externally to it.  This should make scenario setup easier.

@BrettASwift @scottnc27603 @ajiraffe @kadst43 would you mind reviewing?