Add external schema parsers

This allows the definition of external schema parsers - is a breaking change to the API.
Namespace - yes :white_check_mark: 

The instantiation of this is something I'm really not sure about how I think is best. I don't really want to add is as an argument - you may want multiple parsers, or none (not that the current code is any good for this!). I want to add some defaults that can be overridden.