Regex Constructor Cleanup

Cleaned up the Regex class' constructors so they properly share code (i.e. one constructor defers to the other).

Added a private member to the Regex class which tracks whether it's right-to-left or left-to-right.
RegexLiteral String Usage

Updated the RegexLiteral class so it uses a String internally, rather than a std::vector<CodePoint>.  This simplifies some of the code, and increases its readability.
RegexLiteral Normalization

The RegexLiteral class now normalizes its internal string once compilation completes.
RegexState Set Location

The RegexState's location may not be set with the begin(Iterator) member function.  This allows it to be rewound.
regex.hpp Remove Unneeded Include

Removed an unnecessary #include <utility> directive from regex.hpp.
RegexCharacterClass

Added support for character classes.