Internal attribute/value hierarchy class.

Changed StringDeduplicator to use hash values. That way they can be
used as keys in container classes (eg. QMap).

Implemented a hierarchical container for attrib/value pairs where the
value can be a string or another hierarchical container instance. Uses
StringDeduplicator on attrib names and string values.

Added placeholder DataReader and DataWriter source files.