Better alignment process, including hot pixels and simple optmisation.

The two new ideas conceptually are that:
- hot pixels should not be removed for the alignment. The penalty of keeping them
in is small compared with the penalty of taking them out, and then the track looking
for a non-existant hit
- the alignment is so insensitive to the rotation about x and y that it's pointless
to try and do it.
Therefore the alignment now minimises using the TotalDistanceFunction, varying three
parameters (x translation, y translation, z rotation). No iteration is necessary. The
proceedure has been extensively tested on Timepix data. The only 'less-than-ideal' part
is that sometimes (rarely) it struggles to find the correct z rotation angle. This can
be fixed by looking at adjacent runs and putting a starting estimate in by hand.

Code wise:
In ToolBox.py:
- fixed the bug in TotalRotationFunction which is why it wasn't working before. (xx -> xy)
- PerformAlignment now calls TotalDistanceFunction with three parameters to vary

In ComputeAligment.py:
- take out the removal of hot pixels
- remove the iteration, no longer necessary
- instead of Perform3StepAlignment (which is really now 4 steps) just call PerformAlignment
once, and this calls TotalDistanceFunction (once) so all parameters are optimised together.