UTF16 Fix

After encountering a lead surrogate which is not followed by a trail surrogate, the UTF-16 decoder backs off, so that if the error action for strict errors is not to throw, the following code unit will be processed rather than being skipped.

However this back off was by one byte, when a UTF-16 code unit is 2 bytes.
Unit Test Wording Change

Changed the wording of the scenario description for the encoding tests.
UTF16 Unit Tests

Added unit tests for the UTF16 class.
CodePoint Signedness Check

Added a unit test which verifies that CodePoint::Type is unsigned.
Type Changes

Changed the type of CodePoint::Type from std::uint32_t to char32_t to be consistent with the minimal way in which C++11 handles Unicode.

Changed the type of UTF16::CodeUnit from std::uint16_t to char16_t for the same reason.

Changed the constructors and assignment operator overloads of CodePoint so that rather than accepting chars and CodePoint::Types, any integral type is accepted (via template/SFINAE) and simply casted to CodePoint::Type before being assigned to the CodePoint::cp private property.
Encoding::BOM Default Implementation

Added a default implementation for the Encoding::BOM virtual method, which simply returns a default constructed ByteOrderMark (i.e. an empty BOM).

This means that the Encoding::BOM method no longer has to be overriden by encoder/decoders which do not have a BOM (e.g. ASCII and Latin1) and accordingly those overrides have been removed.