Allow encode empty shared_ptr<> to Math::Shape

This is to support serialization of
Physics::RigidRepresentationParameters.
Make Physics::RigidRepresentationParameters serializable

1. Let RigidRepresentationParameters inherits from Accessible.

2. Separate implementation from declaration.

3. Make density, linear damping, angular damping, and shape used for
   mass inertia serializable.

4. Add UnitTest for serialization of RigidRepresentationParameters.
Merge remote-tracking branch 'origin/master' into feature/serialization-rigidRepresentationParameters
Not allow encode an empty shape.

Encoding an empty Math::Shape shared_ptr<> will fail. Also, encoding a
RigidRepresentationParameters object with an empty shared_ptr<> to
Math::Shape will fail.
Merge remote-tracking branch 'origin/master' into wip/Physics-Serialization
MeshShape, add createAabbTree
AabbTree, add spatialJoin for creating list of intersecting nodes
Representation, add getGlobalShape and getAabbTree

- getGlobalShape provides a cached version of the shape in global
  coordinates, insofaras it makes sense to refer to the shape in global
  coordinates.
- getAabbTree provides access to the aabb tree collision detection
  acceleration structure
- Add helper function in TriangleMesh to transform vertices and norms
  from a similar Mesh.
- Implement both functions for Deformable, Rigid, and
  ShapeCollisionRepresentations.
TriangleTriangleMesh update for AabbTree

- Uses the Aabb tree to reduce the number of collision checks.
- Uses precomputed global shapes to reduce local-to-global space
transformations.
AabbTreeTests, fix GCC compile bug

- GCC does not expand __FUNCTION__ as a preprocessor string, so it must
be surrounded with '<<'.
Add Runge Kutta 4 explicit Ode Solver (and linear version) + UnitTest
Fix Linux warnings and errors
Fix OdeSolverRungeKutta4 error when using diagonal mass matrix (no operator /)

Eigen does not implement operator / for DiagonalMatrix. Replaced by * (1/x)
Integrate ode solver Runge Kutta 4 in OSS
Specialize YAML::Convert<> for Physics classes

Specialize YAML::Convert<> for RigidRepresentationBaseState,
RigidRepresentationState, RigidRepresentationParameters.
Make RigidRepresentationBaseState serializable

1. Separate implementation from declaration.

2. Make RigidRepresentationBaseState inherit from Accessible.

3. Make pose in RigidRepresentationBaseState  serializable.

4. Add UnitTest for serialization of RigidRepresentationBaseState.
Make RigidRepresentationState serializable

1. Separate implementation from declaration.

2. Make linear and angular velocity in RigidRepresentationState
   serializable.

3. Add UnitTest for serialization of RigidRepresentationState.
Revise serialization of RigidRepresentationParameters

Customize copy constructor and copy assignment operator so that
RigidRepresentationParameters can be decoded as instance correctly.

Revise UnitTest accordingly.
Make RigidRepresentationbase serializable

1. Make 'InitialState' and 'InitialParameters' serializable

2. Use forward declaration in header file if possible, remove unused
   headers.

3. Add header file 'RigidRepresentationLocalization.h' in
   PhysicsmanagerStateTests.cpp in order to avoid compilation failure.
Serialize RigidRepresentation

1. Add 'SURGSIM_CLASSNAME' to it.

2. Register it in the object factory.

3. Clean up header files.

4. Adjust order of member data.

5. Add UnitTest for serialization.