Make mcp evolution algorithm a bit more readable.

In particular, distinguish between cost and cumcost, the same
variable name was used for this.
Improve speed of MPC by about 30%

Dear diary, I spend a whole day searching for why this implementation
of the MPC was slower then my own implementation. I checked *everything*.
I rewrote the front evolution to match with mine almost exactly. I was
about to give up. And then I saw this... Arg!
MCP: turn while loop into for loop to prevent infinite looping.

A nice feature during development :)
MCP: add sampling attribute: deal with anisotropic data.
MCP: refactored to use typed memoryviews

The arrays are stored on the mcp object, so that they can
be used in methods as well. Will use that to make MCP more
flexibel.
update-mcp: Refactor MCP algorithm in prep for MCP subclasses

Installed a few hooks to allow more flexibility in subclasses, refactored
traceback() to allow obtaining tracebacks fast during front evolution, and
moved some initializations to reset().

Full list:
* integer division in calculating indices
* traceback_offsets use -2 for uninitialized, -1 for seed point. In that
  we we can distinguish between these two cases in traceback()
* Clearing of traceback_offset, cumulative_costs, pushing start positions
  into the heap, are now all done in reset()
* Reset is called every time that find_cost is called.
* Add hook _goal_reached()
* Add hook _examine_neighbor()
* Add hook _update_node()
* Replace while loop with a for-loop to prevent infinite looping in case of a bug.
* Split traceback() in two functions to allow getting a flat traceback fast.
  traceback() calles these two private functions and behaves as just before.
update-mcp: Add MCP_Connect class

This class finds the connections between the given seed points. This is
a bit similar to finding connections between start and end points, except
now start- and endpoints are the same.
update-mcp: Add MCP_Flexible subclass.

This class adds a public def-method for the private cdef-method hooks.
This allows users to influence the behavior of the MCP algorithm by
subclassing it in pure Python.
update-mcp: Small fix.

Need _start and _end attributes for the MCP class.
It worked for my own tests because I overloaded the MCP class.
update-mcp: Change when examine_neighbors is called.

Also renamed Mcp_Connect to MCP_Connect.

Makes more sense to call it when the neighbor is frozen. In that
way the method is called exactly once for each pair of neighbours.
Plus the costs and paths are known and fixed.
update-mcp: add new MCP classes to skimage.graph namespace
update-mcp: added tests for newly added features.

Also fix in existing test related to how the traceback arrays is initialized:
first it was initialized with all -1, now with -2, and -1 at the seed points.
update-mcp: improvements to docstrings.
update-mcp: add tests for MCP_Flexible
Update MCP: Put back the traceback() method.
I initially changed it to allow faster (flat) tracebacks *during*
front evolution, but it turned out not to be necessary. Putting back
to minimize the changes of this PR.
PEP8 stuff.
Merge pull request #854 from almarklein/update-mcp

Updates to MCP algorithm.

Improves speed, adds anisotropy, more flexibility in general, and a new MCP class to find connections between seed points.