-Wtautological-compare Fix

Due to the fact that unsigned integers cannot be less than zero, Clang was generating tautological comparison warnings in converter.hpp, as there are comparisons which determine whether an integer is less than zero, and depending on the template parameter those integers may be of unsigned type.

However, these comparisons are necessary so that the same code can handle signed integers.

To fix this, moved the checks for negative integers into a helper template class -- IsNegative.  This class has a constexpr static Check method, which determines if the given integer is negative.  A specialization of this class template for all unsigned integer types provides a version of this static method which unconditionally returns false.
Merge branch 'regex_linux' into regex

Merging the regular expression Linux branch to obtain fixes to
memory-related bugs discovered by Address Sanitizer.
Addition of Shared Makefiles and unicode.mk Simplification

Created the build/shared directory, to hold makefiles which will be shared between Linux and Windows.

Broke all the dependencies of unicode.dll/unicode.so out into build/shared/unicodeshared.mk, which is included by both the Linux and Windows makefiles, and which defines the variable UNICODE_DEPENDENCIES, which unicode.dll and unicode.so both depend on.  This means that both build/linux/unicode.mk and build/windows/unicode.mk will not have to be updated each time a new source file should be compiled into unicode.so/unicode.dll.

build.bat and build.sh have been updated to copy all contents of build/shared into the root directory before invoking Make.
Regex Tests Build Cleanup

Split the regex_tests.exe/regex_tests dependencies out into build/shared/testshared.mk.

The dependencies for tests.exe/tests could be broken out also, but the plan is to refactor these tests entirely, merging them with the regular expression engine tests, so they can stay as is for the time being.
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
White Space Fix

Added missing white space to testshared.mk.
Literal Tests

Added unit tests for literal matching -- i.e. matching against the parts of the pattern that are not metacharacters/-sequences.

The interactions of RegexOptions::IgnoreCase and RegexOptions::IgnorePatternWhiteSpace and literal matching are also tested.
Merge branch 'linux' into regex_linux

Merging for -Wtautological-compare fix.