Split DFA into DFA, Builder and Matcher

Dfa - just dfa data (transitions/start/end)
Builder - Dfa building routines
Matcher - Dfa matching functionality

Also do related change on regex module (remove dfa as a member)
Hide all regex details from lexer

lexer should already not care about regex implementation things
Like regular expression text parsing, NFA, DFA
Move Regex into package module

Package module introduced in D version 2.064.2
Improve unittest error messages

Add line number of failed test to the message,
because line of failed `assert` is always in same place (not informative)

Start message on the new line,
so total length of the error (with fully qualified name of the file)
would not be big enough to need horizontal scrolling
Fix typo in comment

Interace -> Interface
Create custom regex parsing exceptions
Fix unmatched '}' handling

Throw UnmatchedBrace exception
(was range violation)
Throw exception - missing token before quantifier
Move exists() into its own module