Update validators

Validators now accept a hash of options
ShowCommand should only be run on non-merge refs
ShowCommand should be comparing snapshots

For some reason, ShowCommand was comparing phrases directly pulled from
the database (which may be an empty array) with phrases pulled from a
snapshot of the parent. I think I must have been thinking before that a
show command doesn’t need to take a snapshot, but since there may
potentially be phrases in the database directly associated with the
child but not the parent, that approach makes it look like tons of
phrases (all of them, in fact) were added or removed. The snapshot
approach let’s us compare the list of last known phrases for each
commit, even if one of the commits has no added/removed/modified
content. In the case where there haven’t been any changes between the
parent and the child, this technique will return an empty list since
the last known phrase lists for each commit will be identical.
Add WithNonMergeRef module

Intended to be mixed into git commands.