The major addition with this revision is that meaningful error types
are now returned from the various interfaces.
The minor, but annoying change is that some of the names are now
changed to be shorter. Sorry.
- add `get_subscription()` method to get the subscription string used
by UxAS with ZeroMQ
- always refer to datatypes with fully-qualified names to handle name
collisions between MDMs
- fix `getAllChildren` method to handle hierarchies more than 2 levels deep
Added an ID attribute to the Struct tag in the MDM XML. If this attribute is specified, the struct will be assigned that integer id (as opposed to it being based on the XML ordering of the Struct tags).
Structs that do not have explicit ID attributes are assigned ids starting from one past the maximum explicit ID, or zero if none are given. This produces the original id assignment behavior if no explicit Struct ID attributes exist (the first struct has id 1, the second 2, etc.). If any struct has ID="N" (where N is the maximum value in the MDM), then all structs without an ID will start at N+1, increasing with their order in the XML.