Builds all objects down to the first ITaskContainer node in each branch of
the tree, and replaces all attributes and text elements on each node it
touches; it also sets the new values on the parent object.
Hashes the configuration object if its "dirty" flag is true, then uses
ReflectUtils.getAttributes to get the public non-static single- parameter
'set' methods on the object to be configured; for each method whose name
appears in the configuration propertyObjectMap, the method is invoked on
the object using the mapped value.
Introspection will be performed on the object as follows:
If the object is a primitive or String, and 'to' matches that class,
a new object will be contructed using the String contructor.
The contract is that this method should be called inside the
asElement() method to return the top-level element
with an ID_NAMESPACE whose value is equal to whatever
distinguishes this object from any siblings of the same type.