Tidy up repo tag schema for non-"no-parent" case.
Fix issue where we only ignored a single parent of a merge.

The syntax "^thisref^" will omit the parent and any ancestors of
"thisref". If this is a merge commit, it only excludes the first
parent (and ancestors).

It would seem, according to gitrevisions(7), that the proper way to do
this is "thisref^!" which excludes all parents and their ancestors.
However, this seems to cause other problems. The righter solution is
apparently "^thisref^@"... which /actually/ excludes all parents and
their ancestors.

Frankly, git can go @#$#^&$%^thisref...
Fix cases where git history simplification was causing pain.

Specifically, merge commits were being omitted if a path
simplification was in effect.
Introduce final piece of snapshot dependency rejection logic.