Changes MMIMove to try and reduce number of allocations. This ended up requiring large changes to the MMIMove test, as the constructor of Submatrix now requires rvalue vectors. This will only have an affect on the tests, as nothing else should be creating the Submatrix object, and the rvalue requirement ensures that vectors get moved into the submatrix pointers, rather than copied unnecessarily.
Removes TODO in the wrong place.

The TODO in MMIMove::applicable_submatrices was put where the bug first
originated, however that is not where the bug lies at all. There is now a test
in test/mmi_move_test.cc that reproduces the issue, along with a TODO tag there.
That is a better place to have it, so this TODO tag was removed.
Small documentation corrections.
Fixes bug found last week to do with reset not actually resetting the equiv matrix properly, so equiv matrices which were changed exhibitied strange properties.
Adds loader to iterate through elements in a move class. This actually highlighted a number of bugs in the Move code, which need fixing.
In the process of fixing the bugs in the move code. I believe that the Lineto code is correct, currently ConnectedTo code is failing tests because of how permutations have been cobbled together.
Fixes problem with ConnectedTo
Removes stdout calls.
Formatting clean up.
Adds method to find all permutations between two equivalent matrices.
Changes move code to check all possible permutations of embedded submatrices.
Fixes a problem with the MoveClassLoader. In an effort to be more optimized, the map kept track of which moves had been applied to a matrix and as a move is an involution, if the move had been applied last time it wasn't applied this time. However this causes problems, as the same move can be applied to different submatrices, which would give different results. Hence removing this check ensures that all moves are checked. Duplicated are still removed by checking if the moved matrix is in the map.