Add some architecture

No implementation (a lot of return nothing;), but it compiles now.

Note that the meaning of Matcher has changed: it is now a class for
internal use by the Parsers (where they e. g. register groups or request
look-ahead); users of the library use match(pattern, input) instead of
Matcher(pattern).match(input).