Add a vtkDICOMCharacterSet object for text conversion.

The goal is for each value to contain an 8-bit integer that says
what character set encoding it uses.  The vtkDICOMCharacterSet class
provides utilities for converting between the available DICOM character
sets and UTF-8.
Add support for the GB18030 Chinese character set.

This should support most, but not all, of this particular character
set.  The linear table that converts 4-byte GB18030 sequences into
unicode is incomplete, but it should suffice for display of text.
The conversion only produces values under U+FFFF for now, private
codes are used in preference to standard codes that are above U+FFFF.
Add methods to get value strings as UTF8.
Make SetAttributeValue() set the value's CharacterSet.

When SetAttributeValue() is given a string argument, the value that is
created now inherits the SpecificCharacterSet from the data set.
Fill in the gaps in the GB18030 linear table.

The file gb-18030-2005.ucm used to generate this table was missing
certain ranges of the algorithmically-generated codes (otherwise,
the file would have been huge).  This adds all of the missing ranges
that map to within the BMP (including those that map to the PUA).
Clean up some code related to GB18030 (no table changes).

The table has been returned to rectangular format (see the previous
commit for functional changes).
Explicitly code the changes that occurred with GB18030-2005.

This also adds mapping to planes beyond the BMP.
Explicitly check ranges for multi-byte iso-2022 codes.

The main benefit of this is that it allows the space character
to be interpreted as a single-byte character in iso-2022-jp text.
Otherwise, the trailing space that is mandatory padding at the end
of odd-length strings in DICOM would be interpreted as one half of
a corrupted multi-byte character.
Add tests for vtkDICOMCharacterSet, fix errors.
Fix minor typos 22022 -> 2022.