Add describe() to provide slightly better logging for logic matchers
Refine logic matcher stuff and make NOT matcher take only 1 argument