Add some more architecture, implement Patterns

The CharacterRange, Concatenation, SeveralOf and StringPattern patterns
are all implemented. The matcher isn’t.