String Fix

Fixed a bug in the String class:

 When a vector of CodePoint objects was assigned to a String, the String failed to copy those code points into itself, resulting in the string remaining unchanged (other than its locale being cleared).
CaseConverter Overhaul

Overhauled the way the CaseConverter functions internally to make it possible to case fold/convert single code points.

Added methods to case fold/convert single code points.

Given the overhaul, it will be much easier -- going forward -- to implement method to check to see if a string is uppercase, lowercase, et cetera.
String Conversion

Added the To and Convert method templates to the String class.

The former uses the Converter class template to attempt to convert a string to a certain type, returning a std::optional with the results (disengaged if the conversion failed).

The latter uses the Converter class template to attempt to convert a string to a certain type, throwing on failure.
Range-Based String Construction

Added constructor overloads to the String class which allow strings to be constructed from an iterator-delimited range of objects which are implicitly convertible to CodePoint.