Add negative set module.

This may be useful in showing which characters are expected or not.

Very experimental.
Update project to work with latest version of lein
Another attempt at path merging.

Merging paths can be done in much more powerful ways. The goal is
simple enough: prune the search space of any branches that can never
be matched due to the presence of previous, overshadowing branch.

This needs more thought than I have at the moment.
[negset] Improve union and intersection