RegexState::Begin

Added the Begin method to the RegexState class.  This method retrieves the location of the regular expression engine at the time the RegexState was created.  This allows a partial rewind -- i.e. the location of the regular expression engine can be rewound by setting its current location, without any of the extra cleanup which may occur as a result of calling RegexState::Rewind.
Comment Fix

Comments can no longer occur in customer character classes (i.e. character sets).
Engine Backtracking Fix

Fixed a backtracking error which was causing an infinite loop under certain circumstances.

When a RegexEngine that has previously been invoked is invoked again (to try and match a different substring) it works backwards through the RegexState objects associated with its RegexPatternElements.  This involves moving an iterator into the collection of RegexPatternElements backwards as each RegexState is considered and discarded.

However, due to an off by one error, the iterator into the collection of RegexPatternElements would always point to the element after the intended element, which meant that when retrying the last RegexPatternElement that was matched, begin==end, and an infinite loop would occur as the RegexEngine would skip the matching process and return the same match it had formed previously.
Multiple Fix

Fixed a bug which was causing an infinite loop under certain circumstances.

When a RegexMultiple is invoked during backtracking, it backtracks internally, walking over all the matches it's made of its internal RegexPatternElement.

In the case where the last match can backtrack -- i.e. can possibly match a different substring -- the number of RegexStates in the RegexMultiple's private state does not change (since backtracking considers the last RegexState, finds that its pattern element can be invoked again, and ends without deleting it).  In the instance where the RegexMultiple has a maximum number of matches that it can form, this was misinterpreted as the match already being done (since the number of RegexStates was equal to the maximum number of matches the RegexMultiple was permitted to form), meaning that the RegexMultiple would repeatedly match the same substring.

Added a check so the comparison between the maximum number of matches (if applicable) and the number of RegexState objects in the RegexMultiple's private state would not occur immediately after backtracking, rectifying this issue.
\Z Fix

Due to an omission the sequence "\Z" was ignored during parsing rather than being transformed into a RegexEndNewline.
Regular Expression Unit Tests

Started adding unit tests for the regular expression engine.

Split the String and CodePoint Catch::toString overloads into their own header and source file so that they may be shared without copying and pasting.

The regular expression unit tests will be split across multiple files all under src/test/regex to reduce compilation times.  It is expected that there will be more scenarios/asserts for the regular expression engine than there currently are for the rest of the library, and the unit tests for the rest of the library already take a long time to compile such that it is tedious recompiling them iteratively as one works on them.

Broke the Catch boilerplate code which generates the main method out into src/test/main.cpp, renaming the previous src/test/main.cpp (which contains all the unit tests for the non-regex parts of the library) to src/test/main_old.cpp.  At some point the unit tests for the rest of the library will be refactored to follow the multiple file model being used by the regular expression unit tests, and src/test/main_old.cpp will be removed.

Currently have unit tests for ^, $, \A, \Z, \z, \G, \b, and \B -- i.e. the anchoring constructs.