More performance fixes

- Changed GetConverter<T>() to GetConverter(field.GetType()) to take
account of T being object and hiding the actual underlying type

- Reduced the creation of new TypeConverterOptions objects by caching
after creation.