Initial commit -- algorithm is mostly there, except for final clusterer.
The algorithm works, but isn't very fast or accurate.
Not fast because I haven't optimised, not accurate due to the poor final clusterer (I think)