Add vtkDICOMValue methods that use count arguments.
Use size_t instead of unsigned int as interface type.

Using unsinged int is likely to cause many many compiler warnings,
because unsigned int is smaller than size_t and ptrdiff_t on 64 bit
systems.
Clean up vtkDICOMValue code, avoid unnecessary calcs.
Remove deprecated vtkDICOMValue methods from code.
Add another 8-bit field in vtkDICOMValue for overflow.

This is specifically for values that use delimiters instead of fixed
lengths, such as OB or UN VRs that store encapsulated data.  By adding
an 8-bit overflow byte for the 32-bit NumberOfValues field, it becomes
possible to store encapsulated data with sizes up to 2^40 bytes (1TB).
Values that use fixed lengths are still limited to 2^32-2 bytes (4GB)
as per the standard.
Use unsigned char as the basic "byte" type.

This will help to improve security, because the signedness of unsigned
char is always "unsigned", while the signedness of "char" depends on the
compiler.
Add an image codec class for compression/decompression.
Make the generated meta data a member of the generator.

This seems like a logical thing to do, since the generator
already has other member variables that depend on the meta data.
Fix comment style for SetTransferSyntaxUID.
Get SOPClassUID from meta-header if not in data set.

This is specifically for the sake of DICOMDIR data sets, where
the meta header is the only place that the SOPClassUID for the
DICOMDIR exists.
BUG: Don't count LengthToEnd element when computing size.

The LengthToEnd element is retired and vtkDICOMCompiler removes
it if it is found.  Therefore, neither should it be counted when
the group length is computed.
Keep the LengthToEnd if it was already present.

This was the only retired tag that was forcefully stripped from the
data set.  If present, it seems better to ensure that it is correct,
than to remove it.  This also makes it easier to pass through old data
sets unchanged.
Don't write bogus tags with group < 0x0002.
Keep the private information in the meta header.

Even though we re-create the meta header, it makes sense to keep the
private information unless we have new private information to replace
it with.
BUG: RLE codec was using big-endian ordering for 16-bit data.

The RLE segments start with the most significant byte and end with the
least significant.  On a little endian machine, this means starting with
the byte that is at the highest address.
Ensure that RLE codec works on big-endian machines, too.
Add a fallback for when PixelSpacing is zero.

It should never be zero, but just in case, set it to 1.0 if it is.