Refactor DN and RDN classes and improve their test coverage.
The following refactoring work was performed:
* removed the DN, RDN, and AVA comparator classes. The DN
and RDN classes implement Comparable. RDN.compareTo now
uses ordering matching rules where possible (taken from
the original RDN Comparator class)
* RDN class is now almost immutable (it's intention is to
be 100% immutable). It is still possible to retrieve
attribute values and modify them (attribute values should
be immutable - issue raised)
* RDN compareTo, hashCode, and equals methods now
sort AVAs based on the type's name/oid (previously no
sorting was performed)
* provide factory methods for simple RDNs and a builder
class for constructing more complex RDNs
* DN class is now immutable with the exception described above
for RDN attribute values. There are now factory methods for
creating, joining, and splitting DNs
* special factory method for creating null DNs - DN.nullDN()
* DN.getParent() renamed to DN.getParentDNInSuffix() - all references
updated - this method will be moved in a subsequent change
to the DirectoryServer class
* implemented a new DN.getParent() method which ignores suffixes
* DN no longer copy their RDN array when constructing parent
DNs or localNames - instead array offset+length is identifies
which part of the array is associated with the DN
* refactored and simplified much of the DN/RDN decoding routines