Support heterogeneous types at the top level in XmlProvider (fix #294)

I don't think there is a way to reuse any of the existing handling, so I added a new case (the trick is that here, the _current_ element can be one of several options, rather than child element being one of several options).