Data Retrieval Improvement

Altered the data retrieval interface:

Rather than separately retrieving a begin and end iterator, an Array<CodePointInfo> encapsulating the entire data array is returned through a single call to Data.  The functions DataBegin and DataEnd have been removed.
Compositions

The UCD parser now outputs an array of Composition objects, which specify all the compositions that must be made to place a string in NFC.
Data Retrieval Refactor

Simplified the code in src/data/getdata.cpp.
Locale Cleanup

Cleaned up, corrected, and documented Locale-related source and header files.
CodePoint Cleanup

Cleaned up the codepoint.hpp header and codepoint.cpp source file.

Broke the specific member overloads of operator == on the CodePoint class out into generic, global function templates, which can compare any integral type to a CodePoint.

Changed the name of the CodePoint::IsWhitespace method to CodePoint::IsWhiteSpace and updated its implementation to use the CodePointInfo::IsWhiteSpace property.

Deleted unused constructor and private member of the Condition class.

Added documentation.

Removed the implementation of the CodePoint::IsBreak method (for now).
Locale::Language

Added the Language property to the Locale class.  This is needed to implement certain conditions (those which are conditional upon a certain language).  The property defaults to nullptr (added the appropriate constexpr default constructor to implement this).
Condition Update

Updated the implementation of the Condition class' operator (), which evaluates the condition against a certain context.
Conditions

Implemented the conditions in the Unicode::Conditions namespace (unicode/conditions.hpp).