Allow custom xml reader

Passing in an XMLReader allows the client to provide their own setFeature, isNamespaceAware etc. parameters