Create Particle library and add PointGenerator base class.
Add RandomBoxPointGenerator and RandomSpherePontGenerator

Classes that can generate points inside or on the surface of a given
shape.
Add ShapesPointGenerator class

A class with a populated table of point generators.

Client can call 'point[In|On]Shape()' on this class, passing it a shape.
And a point [In|On] the passed in shape will be returned.
Add UnitTest for point generator
Documentation revision
Rename variable and documentation revision.
Revise Random[Box|Sphere]PointGenerator

1. Simplify code in RandomBoxPointGenerator::pointOnShape().

2. Fix a bug in RandomSpherePointGenerator::pointInShape().
Revise ShapesPointGenerator

To follow the same structure of DcdCollision and ContactCalculation
Revise UnitTest
Fix a bug in RandomBoxPointGenerator::pointOnShape() when selecting axis
Add UnitTest for ShapesPointGenerator
Change OdeState::isValid to improve performances

Writting up our own visitor is not necesary. Using Eigen::MatrixBase::allFinite() has terrible perf !
Using any of the isFinite functions other than boost has terrible perf too.

So, the solution consist on 2 parts:
- improve the isFinite test by writing our own testing method directly using the binary format of the double.
- Use a trick to test if all the numbers in a vector are finite or not: if you sum them all and one or multiple values are non finite, the sum will be non finite (by definition of the IEEE754 standard).
So, let's sum up the values and only do the isFinite test once per vector.

This speeds up the test by more than x2
Address reviewers' comments

1. In DefaultPointGenerator, use LOG_SEVERE instead of assertion.
2. Move 'm_randomDevice' into PointGenerator's constructor
3. Revise RandomBoxPointGenerator and RandomSpherePointGenerator
4. Revise UnitTest
Replace our own version of isFinite(double) to use the existing one (boost)
Performance: do not check OdeState validity in physics simulation

For performance purposes, it is best to avoid checking for invalid states. This could cause potential issues if a deformable representation diverges.
We can re-address this issue later if it comes back.
Refactor OdeState validity unit test
Documentation revision and remove unused header
Revise RandomSpherePointGenerator::pointOnShape()

RandomSpherePointGenerator::pointOnShape will return the point generated
directly instead of normalizing it and then multiply by the radius.
It's because the generated point is already on the surface of a sphere.
Update UnitTest
Merge branch 'master' into feature/particleSystem-PointGenerator

Conflicts:
	SurgSim/Particles/CMakeLists.txt
	SurgSim/Particles/UnitTests/CMakeLists.txt