Allow multiple saxon processors to be used

XProcRuntime can only be configured with a single set of resolvers and listeners, and due to the use of ThreadLocal variables in extension function, XProcRuntime can only be used by a single thread.

Due to the tight relationship between XProcRuntime and the saxon Processor (registerExtensionFunction, setURIResolver, and setErrorListener), is not always possible to use the same saxon Processor for all operations in the JVM.

This patch allows multiple saxon processors and therefore multiple XProcRuntimes with the TypeUtils class.