INT-2922 Fix TypeConverter Concurrency Issue

During initialization, it is possible for type conversion to
fail because a second thread accesses a partially built list
of PropertyEditors. This is because getDefaultEditor(Class) is
not thread-safe.

Add a test with mocks and spies to verify concurrent access
to the method occurs before the fix, and not after the fix.

Synchronize the call to getDefaultEditor(), when called from
canConvert() and convertValue().
INT-2922 Optimization

Only synchronize the call until we have invoked
the method at least once.