U4-4931 - 6.2 - lock contention & potential application lockdown

See details in issue tracker, this is #384 and #388 re-targeted for 6.2(.2).
Pushed fixes.

We still had a few value creation within the cache lock (and corresponding potential deadlocks) but now I'm pretty sure the cache lock is solely used to manipulate the cache, and no value can be created while we hold a lock. And so, the lock is not recursive anymore.

Have refactored the HttpRequestCacheProvider so it does not use the global lock, yet it shares many of DictionaryCacheProviderBase methods so we do not have to duplicate code. I still have an issue in that one, marked **FIXME**, which is that we need to lock on some request-bound object and I don't know what to use.

Once that's fixes, it should begin to look good.