MATCH-98: RegexPattern cannot be aot-compiled

Finally address source of AOT issues. Multimethod dispatch based on Java
classes is simply not reliable. Instead switch to namespaced keywords
for the dispatch cases for multimethods `c.c.match/emit-pattern`,
`c.c.match/groupable?` and `c.c.match/to-source`.

All pattern types now supply a `:clojure.core.match/tag` key.

When determining the type of a particular syntax similar return a
namespaced key. This is done via a new protocol `ISyntaxTag`. Default
implementations are provided.

Update `c.c.match.regex`.