Lose structure for algorithm.

Refs #9842
Properties for sample/can geometry & can material.

Refs #9842
Refactoring to separate out xml creation for each shape.

It replaces Poco::format with the more flexible boost::format.
Refs #9842
Run set sample material

Refs #9842
Define sample shape from inputs.

Refs #9842
Run MonteCarloAbsorption algorithm on workspace.

Tests don't pass yet due to problems in Monte Carlo algorithm.
Refs #9842
Bare bones documentation file.

Refs #9842
Merge branch 'master' into feature/9842_mc_absorb_hollow_cylinder
Fix indentation & whitespace. No code changes.

Refs #9842
Alter approach to generating random point in sample/container.

For hollow shapes the old approach was very inefficient. The new method
chops up the sample into discrete boxes and first samples the boxes and
then inside a box. There is also a possibility of improving it further
by first removing the boxes that are in a hollow part of the object at
the caching step but this will be done later.
Refs #9842
Checkpoint sample-block performance improvements.

Refs #9842
Implement hollow can as simple cylindrical sample.

Refs #9842
Improve performance of Sphere::side

Remove temporary V3D constructions.
Refs #9842
Cache pointers to SampleEnvironment children

Avoids constant dynamic casting when checking against points & rays.
Refs #9842
Performance improvements in MonteCarloAbsorption

Avoid constructing unnecessary V3Ds and exit early if a point is found
to be in a block rather than checking everyting.
Refs #9842
Store a reference to the intersected object in a Track link

This should avoid having to go through the object component to get access
to the shape when testing for intersections.
Refs #9842
Put Geometry::Object back to storing the material.

Refs #9842
Remove material from Sample as it is now stored with the Object.

Refs #9842
Simplify SampleEnvironment to be a collection of Objects

This offers a massive performance improvement for repeated intersection
calculations as it removes he need to consider the absolute location
of the components. It is also more consistent with the way the sample
shape is dealt with as that does not catre about absolute location either.
The location is defined within the instrument.
Refs #9842
Parallelize MonteCarloAbsorption algorithm.

Uses a separate random number generator per thread. This way the results
are always reproducible.
Refs #9842