Revert "bad merge diffs"

This reverts commit 7946be9f9b75fa43e700f519cb0caa07a352aac9.
Revert "one weird hack to maybe have better messages for nonexistent packages"

This reverts commit 75df1097e06dc7faed95e3f83d357ff3de63872f.
track ancestry as chain, not just root

switch constraintAncestor to be a nested mori.hash_map/mori.list
Also use mori for choices

Now there's no _.clone in resolver.js!
A more specific error for nonexistent package

This helps with #2410 though that particular case doesn't work since
paths are explored in a bad order.
Prefer to explore local packages first

(Or other packages where there is literally one version in existence.)
Merge branch 'constraint-solver-errors-ancestor' into release-0.9.0

Improves the #2410 fix to (at least for the particular case) be a little
less hacky: it's now OK if bad packages exist somewhere in the graph as
long as there's a way to avoid them.