Added extractSubTree() method to tree classes.

Added extractSubTree() method to the tree classes. This allows for extracting
a particular subtree from an SR document tree or from another subtree. Also
added new tests for the new methods on DSRDocumentSubTree and DSRTree level.
Enhanced support for by-reference relationships.

Enhanced support for by-reference relationships in subtrees extracted from a
valid document tree. Also added a new test for this particular case.
Further enhanced by-reference relationships.

Now storing the value type of a referenced node (target content item) in the
by-reference tree node class in order to facilitate IOD constraint checking.
Added new methods to by-reference tree node class in order to avoid direct
access to the member variables (by a friend class), and to allow updating the
referenced node. Added missing support for by-reference relationships in
DSRDocumentSubTree::checkSubTreeConstraints(). Also added a new test on this.
Insert a subtree into an empty document tree.

Added missing support for inserting a subtree into an empty document tree (if
this subtree is a valid document tree). Also added new tests for this case.
Added dcmIsImageStorageSOPClassUID() function.

Added a global function that checks whether a given SOP Class UID is one of
the known Image Storage SOP Classes (similar to dcmIsaStorageSOPClassUID()).
Added check on valid "IMAGE" SOP Classes.

Added check on SOP Classes to be referenced from an IMAGE content item, which
includes the Segmentation Storage SOP Class. This kind of check was already
performed for Presentation State and Waveform objects. Also compared these
lists of supported SOP Classes with the current edition of the DICOM standard.