Item Integer Parsing Fix

Fixed a type mismatch problem in the static add_digit helper function in item.cpp.
Item Collation Elements Parsing

Added the CollationElements method to the Item class, which parses collation elements from an item on a line of allkeys.txt (or another similarly-formatted file).
Array Additions

Added a new constructor to the Array class template.  The new constructor is constexpr (like the other constructors) and takes a reference to a C array.  It is templated, deducing the size of the array through a std::size_t template parameter.

Added a global helper function template MakeArray, which deduces the type of a C array, and returns an Array object encapsulating it.

This functionality was previously in getdata.cpp as a private helper function template.  Accordingly modified getdata.cpp to use the global functionality, greatly simplifying the code in that file.
Parser Output Cleanup

src/data/data.cpp does not require an include for unicode/conditions.hpp, however the parser was outputting an include directive for it.  Rectified this.
DUCET Parser

Wrote a utility to parse the DUCET from allkeys.txt into a C++ source file -- src/data/collation.cpp -- containing an array of CollationElementTableEntry structures.

As recommended by Unicode Technical Standard #10 (Unicode Collation Algorithm) code points that have a decomposition are filtered out during parsing and do not appear in the final C++ source file.
.gitignore

As src/data/collation.cpp can be rebuilt from allkeys.txt at any time, a prebuilt version of it is not part of the repository, and therefore it should be ignored.
Collation Getter

Added a global function called Collation to unicode/data.hpp which retrieves the collation element table.
Add Collation to Locale

Added a property for the collation table to the Locale class.

The default locale will now be initialized with the DUCET for its collation table.
Variable Weights

Updated the DUCET parser and UCD utilities to extract whether a collation element has a variable weight, in addition to the collation element itself.

This necessitated changes to the structures in which this data is stored.

Simultaneously renamed the Collation global function, and the Collation property of the Locale class to CollationTable.  This name better reflects what the function does/property is.
Vector Utilities Additions

Added 4 new function templates to the unicode/vector.hpp header, which take a pointer typed iterator, and an optional std::vector, and return the pointer typed iterator unchanged if the optional is disengaged, otherwise an appropriate pointer typed iterator to the std::vector.

Similar function templates were previously provided in comparer.cpp.  These have been removed and the code that used these has been altered to use the new, global versions.
Collator

Implemented the Collator class, which collates Unicode strings.

Lacks documentation.

VariableWeighting::ShiftTrimmed is not implemented yet (it operates identically to VariableWeighting::Shifted -- the final pass to trim 0xFFFF weights is unimplemented).

Getters/setters for options are missing.

Several swathes of functionality are completely untested (such as backwards level 2, and VariableWeighting settings other than NonIgnorable).

Collation element derivation for ideographs is unimplemented, as the CodePointInfo structure does not presently contain the Unified_Ideograph property, which is necessary to implement this functionality.