Add a 'tag' function to matchers

This makes it possible to create tags like '(and (tag "t1") (tag "t2"))'. Functionally, it enables the same sort of behavior as PR #113, but with mechanisms within the tag language. Using the nomenclature of that PR, we have

* AllOf: (and (tag "t1") ... (tag "tn"))
* AnyOf: (or (tag "t1") ... (tag "tn"))
* NoneOf: (not (or (tag "t1") ... (tag "tn")))