Grouping Construct Support

Added support for explicitly named/numbered capturing groups, automatically numbered capturing groups, non-capturing groups, non-capturing groups which execute with different options, and changing options mid-pattern.
E-Mail Regex Miscellaneous Unit Test

With the addition of basic grouping constructs, the regular expression engine supports all the constructs necessary to compile and run the e-mail validation regex from here: http://www.regular-expressions.info/email.html

Added a miscellaneous unit test which uses this regex to validate various e-mail addresses as a means of testing the various parts of the engine in action together.
Lazy Repetition

Implemented support for lazy repetition (e.g. a*?).  Previously there was support for parsing lazy repetition structures, but there was no implementation.

Lazy repetition is realized as progressive greedy repetition.  Accordingly the greedy repetition driver has been refactored into the RegexMultipleState class and is now shared.  RegexLazyMultiple uses this driver, but limits the minimum and maximum number of matches which may be formed, starting at the minimum and working upwards to the maximum as matches fail or as the engine backtracks and requires that the RegexLazyMultiple form different matches.