JCache improved concurrency of CacheManager and CacheProvider impls improved #3564

This pull request send as separate from #3564 to preserve #3564 comments
You still have a race problem on the get here. 

"

I think this part is broken; if another thread has created the cacheManagersByUri after the == null check succeeds, you won't see this cacheManagersByUri instance and you add the created cacheManager to 'too late created' cacheManagersByURI.

This can lead to multiple instances of the same cacheManager being created. Probably you want to deal with the return value of the putIfAbsent to determine the correct cacheManagersByURI instance.
"