Integer Conversion Fix

Due to the fact that the UCD does not assign integer values to letters which represent hexadecimal values, converting from a hexadecimal string to an integer was failing improperly.

The solution was to -- in addition to checking the UCD -- probe the Locale::Digits array for a digit which represents the same code point under simple case folding, and then take its associated numerical value.

Added a unit test to verify that this fix is working correctly.
Merge branch 'master' into regex

Merged master for the fix for hexadecimal string to integer
conversions.

This is necessary for proper parsing of certain escapes in regular
expressions.
Range Fix

The range character set construct (i.e. [a-z]) was previously taking a single code point on either side and using it as the begin and end of the range.  While this satisfies some of the requirements of the range construct (e.g. it will correctly parse and compile [a-z]) it does not satisfy others (e.g. it will incorrectly parse and compile [\x00-\x29]).

Moved the range code from regexrange.cpp (which has been deleted) to regexliteral.cpp so the code for parsing escapes may be shared.

Also cleaned up the parsing code a bit.
Greedy Repetition

Implemented support for greedy repetition constructs (e.g. a*).

While parsing support for lazy repetition constructs (e.g. a*?) is present, compilation and execution support for them is not.
RegexOptions::CultureInvariant

Updated the RegexCompiler::Compile static method to support RegexOptions::CultureInvariant.

RegexOptions::CultureInvariant causes the compiler (and thus the engine) to use the default locale (i.e. DefaultLocale) rather than the current or specified locale.  Accordingly when this option is set the RegexCompiler::Compile static method will now ignore the provided Locale and use DefaultLocale unconditionally.