Merge branch 'regex_linux' into regex

Merging the regular expression Linux branch to obtain fixes to
memory-related bugs discovered by Address Sanitizer.
Merge 'build_system' into regex

Merged the build system branch (which is dedicated to simplifying the build system so that Linux and Windows makefiles do not have to be updated separately) for unicode.mk and test.mk simplifications which will aid regular expression engine development and testing.
Remove Unnecessary White Space from regexconditional.cpp
Backreferences

Added support and unit tests for the backreferencing constructs:

- \number
- \k<name>
- \k<number>

The code for the backreference pattern elements and parser is in regexliteral.cpp so that it may share the literal matching code written for RegexLiteral.  This code has been refactored into a base class -- RegexLiteralBase -- which is shared between RegexLiteral and RegexBackreference.
Allow Beginning of Match to be Adjusted

Added support to the RegexMatch class -- and where it's used -- so that the beginning of the match is recorded before the engine is invoked, and so that it can be adjusted during the matching process.
Reset Match

Implemented the \K structure, which allows the beginning of the match to be adjusted mid-match, and related unit tests.
RegexMatch Numeric Capturing Group Names

When the RegexMatch class is supplied with a String to its operator [] it will now check if the given string is numeric, and, if it is, will look up the corresponding number instead.

This is the same transform as is performed during compilation when a capturing group is explicitly named -- numeric strings are transformed into numbers.
Group Overhaul and Unit Tests

Added unit tests for non-capturing groups, capturing groups (named, numbered, and automatically numbered), and non-capturing groups which change the engine's options.

RegexBalancing now properly derives from RegexGroup, which simplifies its implementation and reduces repeated code.

Substantially rewrote the parsing/compiling code for grouping constructs for simplicity, and in so doing fixed a small bug:

When compiling a capturing group, the compiler would compile the entire captured subpattern before adding the pattern element to the RegexCompiler's index of capturing groups.  This meant that if a capturing group with an identical name or number was nested, they would be added out of order.
Remove Unneeded #include

regexmatch.cpp no longer includes the <new> header.

At some point in the past this source file may have used placement new, but no longer.
Add Capturing Group Unit Tests

Added unit tests for multiple captures -- i.e. when the same group captures multiple times in a single match.  Verifies that captures are made left-to-right in left-to-right mode, and right-to-left in right-to-left mode.

Changed another scenario so that assertions wouldn't be double counted -- nesting THEN blocks was causing Catch to double count assertions in the outer block.
Balancing Fix

Attempting to compile a balancing construct with an empty second group now causes an exception to be thrown.
Balancing Unit Tests

Added unit tests for balancing constructs.

Added a miscellaneous unit test to run an example from MSDN: http://msdn.microsoft.com/en-us/library/bs2twtah(v=vs.110).aspx#balancing_group_definition
Missing Include

Added an explicit include for the <string> header to src/test/catch.cpp.  The header is implicitly included by one of the other explicitly included headers, but it's poor style -- in my opinion -- to rely on that.