Updates to MCP algorithm

A few years back Zach and I collaborated on an MCP algorithm. Although the heap implementation is exactly equal, the MCP implementations differ and diverted in some respects. This is my attempt to merge the two back together, taking the best features of both. I tried to keep the changes as minimal as possible. If this gets merged, I can get rid of my own implementation :)

The main contributions are speed, dealing with anisotropy, more flexibility in general, and a new MCP class to find connections between seed points.