Add support for DSL constructors and combinators
Remove legacy class
Add non-greedy versions of *, + and ?

Greedy operators match as many characters as possible, non-greedy ones
match as few characters as possible.
Add match class