Convert transform source adaptation into a protocol.

Convert the XMLReadable protocol extend-type calls into one
extend-protocol call, for brevity.
Be consistent about the order of SAX handler functions.
Use exclude-?xml helper in all the places.
Convert the transform result adaptation to protocols.

The TransformResult protocol allows objects to produce a Result object
along with an arbitrary piece of state which extends TransformResult.

The state is used to produce the result "value", either by simply
handing back a mutated Java object, unwrapping it, or by extracting a
value generated by the API mutating the Result.