Basic Tree structure, made up of TreeNodes, each of which has TreeData for storing extra information.
Merge branch 'feature/aabb-tree' into feature/add-aabbtree

Conflicts:
	SurgSim/DataStructures/CMakeLists.txt
Add AabbTreeData and basic functionality
Adding IntersectionVisitor
Documentation updates
Use the new Aabb type inside the octree
Make some functions protected on the treenode

add documentation, add assertions
Fix: register OctreeShape in ObjectFactory, so that it's serializable.
Add UnitTests for DoubleSidedPlaneShape and PlaneShape.
Make Physics::Representation serializable

1. Use 'size_t' instead of 'unsigned int' for m_numDof

2. Reorder headers in .h file

3. Use forward declaration

4. Separate definition from class declaration, move implementation into
   .cpp file

5. Drop 'virtual' keyword in front of 'setIsActive()' and
   'setIsGravityEnabled()' methods

6. Remove re-declaration of inherited pure virtual method 'setPose()'

7. Remove parameter names in copy constructor and copy assignment, since
   they are not used, i.e. copy construct and copy of this class is not
   allowed

8. Make member data 'm_numDof', 'm_isGravityEnabled', and 'm_isActive'
   serializable
Revise UnitTest for Physics::Representation

1. Merge declaration/definition of MockRepresentation from
   RepresentationTest.cpp to SurgSim/Physics/UnitTests/MockObjects.h

2. Add UnitTest for
   Physics::Representation::set/getCollisionRepresentation

3. Add serialization UnitTest for Physics::Representation
Simplify Geometry::indexOfMinimum using Eigen
Clean up headers in MathConvert.h, Convert.h, and other dependencies.
Specialize YAML::convert<> for SurgSim::Math::Shape class.
Revise UnitTest for math shapes.
Check against nullptr when encode a pointer.

1. Add assert in encode() function in FrameworkConvert.cpp and
   MathConvert.cpp

2. Add UnitTest for encoding an empty pointer.
Merge remote-tracking branch 'origin/master' into fix/math-shape-serialization-and-unittest
Refactor the code using Eigen to get rid of both Geometry::indexOfMinimum
Use comma initializer followed by finished() in distanceSegmentTriangle
Use header 'Log.h' instead of 'Logger.h' and 'LogMacros.h'