This adds only the trivial conceptReference() matcher.
(Also adds tests for ConceptReference in DynTypedNode, which need this
matcher)
This node isn't part of any other inheritance hierarchy, so it meant
handling a new base type everywhere.
This caused us to run out of discriminator bits in the CurMatchData,
so I replaced the data structure with std::variant which is at least
less code.
Was this change to drop the () by purpose?