Add `define_negated_matcher`

This replaces #547.
Fixes #527.
Fixes #493.
Is the description_override block work documenting in the feature?