XMLTransformer
 [x] Invoking the transformer with invalid xml produces an error
 [x] Invoking the transformer with an invalid callback function throws an exception
 [x] Invoking the transformer with a valid callback function works
 [x] Invoking the transformer with an unusable method array throws an exception
 [x] Invoking the transformer with an invalid array throws an exception
 [x] Invoke the transformer with a valid callback method
 [x] Invoking the transformer with crap as callback throws an exception
 [x] Returning an unexpected array key throws an exception
 [x] Returning an empty array yields no modifications
 [x] Returning nothing or null yields no modifications
 [x] Returning false removes the tag and its content
 [x] Returning false for the tag removes the tag but keeps the content
 [x] Renaming a tag works
 [x] Renaming a tag with namespaces works
 [x] Removing a tag including content works
 [x] Removing a tag without content works
 [x] Removing an empty tag works
 [x] Adding attributes with and without namespaces works
 [x] Renaming an attribute works
 [x] Renaming an attribute with namespaces works
 [x] Changing attribute values with and without namespace works
 [x] Removing an attribute works
 [x] Make sure only attributes that are present in the source tag are renamed
 [x] Insert content before an element
 [x] Insert content after an element
 [x] Insert content inside at the end
 [x] Insert content outside at the end
 [x] Insert content behind an empty element
 [x] Insert content after an empty tag
 [x] The tag type passed to the closure is correct
 [x] Trying to insert content at the beginning of an empty tag throws an exception
 [x] Trying to insert content at the end of an empty tag throws an exception
 [x] Insert content before an empty tag to be removed
 [x] Outer content transformation returns input unmodified
 [x] Outer content transformation gets the expected input
 [x] Outer content transformation works with nested tags to be transformed
 [x] Inner content transformation gets the expected input and replaces the tags content
 [x] Content behind nested ignorable tags is not removed
 [x] Escaped special characters remain unmodified in attribute values
 [x] Removing tags completely works with nested tags
 [x] Entities get substituted

