Add a PoseComponent

Instead of SceneElements holding a rigid transform, they now contain a
pose component that Representations use as their base pose.
PoseComponent is now discovered by Representations

Instead of setting the PoseComponent when you set the SceneElement of a
Representation, Representations "discover" the PoseComponent on wakeUp.
Move PoseComponent discovery to Component

Move the PoseComponennt discrovery from the Representation to the
Component. This allows for the wakeUp to be returned to non-virtual.
Since PoseComponent is a Component, it now has a PoseComponent. To
address this, it overrides getPoseComponent to return nullptr.
Make DriveElement behaviors serializable

Add the needed functionality to serialize DriveElementBehavior and
DriveElementFromInputBehavior.
Cleaned up changes from adding a local pose

* removed unneeded forward references and includes
* fixed types and improved comments in Component, SceneElement
* consistently call getLocalPose in Representation
* ensure ViewElements have a camera and view on initialization