Add a SampleShapeValidator type

It is used for checking that a workspace has a valid sample shape.
Refs #10169
Add unit & performance test for V3D::rotate.

Refs #10169
Fix doxygen warnings in SampleShapeValidator

Refs #10169
Improve performance of V3D::rotate.

Avoids instantiating two additional matrices for the calculation.
Refs #10169
Checkpoint CalculateMSVesuvio

Refs #10169
Add code for calculation of first scattering.

Refs #10169
Check point CalculateMSVesuvio

Refs #10169
Finished off algorithm. Needs further testing.

Refs #10169
Futher debugging on Vesuvio MS calculation.

We now get something that looks like a distribution but it doesn't
match the VMS output yet.
Refs #10169
Add error in tof to Vesuvio resolution parameters

Refs #10169
Fix a few more bugs in calculation.

1. Use resolution parameter for generating initial tof
2. Use correct coordinate system for generating random scatter direction.
Refs #10169
Fix error in operator precedance when calculating scatter length

Refs #10169
Fix bug in e1 range determination.

Refs #10169
Fix bug in binning data to final workspace.

Refs #10169
Convert umbra and penumbra values to metres internally.

Refs #10169
Fix scattering angle calculation on final detector event.

Refs #10169
Fix loop terminator for uranium final energy.

Refs #10169
Update the Vesuvio detector shape to match reality.

Refs #10169
Fix problems with computing the final detector position.

Refs #10169
Fix indexing bug with scatter points.

Refs #10169