Reuse instances of DataTypeFactory

DatatypeFactory.newInstance is a costly call, and shows up pretty high in the profiler when performing many quick SOAP requests. I've arranged for the factory to be reused accross multiple calls.

According to the doc it's not guaranteed to be thread safe (although the implementation I'm using certainly is), so I used a ThreadLocal to get one instance per thread.