Refactor to StringDeserializer:

- resubmitting this

- use new T() not Activator.CreateInstance to make an object
- Add the generic constraint that DTOS much have a parameterless constructor. It did anyway, just not visibly: previous use of Activator.CreateInstance<T>() depended on new() being present. Now we will fail at compiler-time not runtime if it's not there.
- StringDeserializer is generic on the method not the class
- the generic on ResponseParser can also move down to the Parse method