DRMacIver Experimental new approach
The idea is to hybridize the Dijkstra and L* searches by exploring,
looking at how we got to each state and forbidding anything that goes
astray.

Another key idea here is that each state maintains just a single
experiment (well, implicitly two, counting the empty string) which
we use to distinguish it from other states. We try to force it to
be one that leads to a positive result, and to be as small as
possible.

Honestly, this doesn't work very well. I think it's the right
direction but at present it works less well than its predecessors.
Latest commit 5459fa0 Mar 31, 2016