Add per-instances method to vtkDICOMDataElement interface.

Earlier I was trying to keep the vtkDICOMDataElement interface as similar
as possible to how it appears in the DICOM standard.  This was a bad idea,
the interface should reflect usage first and foremost.  So I removed the
GetVL() method because people should get VL from the Value object, and
added methods so that people can check if the value is per-instance and
then get the value for a particular instance.

Also, the iterator's "*" operator can return a reference for efficiency.
Add a vtkDICOMCompiler class, to compile files from DICOM data.
Add a test for the vtkDICOMCompiler class.

This test will read a series with vtkDICOMParser, write each file
with vtkDICOMCompiler, and compute an md5 hash to check if the
output file is identical to the original.
Fix three vtkDICOMCompiler errors for writing metadata.

Elements of type AT were written incorrectly due to a math error.
PixelData size was computed wrong if SamplesPerPixel was absent.
Computation of sequence item size missed the 8 bytes for item tag.
Rebuild sequence as a fixed-size sequence if vl is defined.

This is slightly pedantic, but it allows us to distinguish delimited
sequences versus fixed-size sequences in our applications.
Allocate space for at least one item in vtkDICOMValue.

Aftery my previous commit, I quickly ran into dicom data sets that
had zero-length sequences, which caused uninitialized memory writes.
My vtkDICOMValue::ValueT class has an array of length one, and
if a constructor exists it is called on that one item so I had
better make sure that memory is allocated for it.
Add a flag to vtkDICOMItem to indicate if it was delimited.

The main reason for this is that it assists me it testing, by making it
possible to write out DICOM files that are structured identically to the
input files except for the parts that I have intentionally changed.
Add an option to keep the same PixelData VR as original data.

This is a useful option when cloning a data set.  As a side-effect,
the PixelData now shows up in the recorded meta data as a zero-length
data element.  I've also modifed ComputePixelDataSize() so that it
works when BitsAllocated is not divisible by 8, as occurs in some
pre-DICOM data sets.