Add external schema parsers

This allows the definition of external schema parsers - is a breaking change to the API.