xso: re-implement and generalise ChildText on top of AbstractElementType things
This should be possible without changing the interface or introducing (lots of) overhead at all.
I imagine introducing a ChildValue descriptor which works like ChildText, but instead of blindly parsing the text, it uses an AbstractElementType to expose access to the value of the underlying XSO.
Then we introduce a ElementText element type which creates an XSO definition which simply catches its text (with the appropriate child/attribute policies) and the given tag and use that to re-implement ChildText on top of ChildValue, internally.
This removes some special casing from things, which is always nice, and makes things more consistent.
Thinking of this again. At the moment, ChildText directly parses the event stream, thus preventing the construction of an XSO instance which will just be thrown away. In addition, we would have to create an XSO subclass for each ChildText instance.
This makes me sway towards keeping ChildText as-is.