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 here. If 2 threads at the same time call close, and both of them have concluded the localInstanceRef!= null and one of the threads is a bit quicker and set hazelcastInstance to null, then the other thread can get a NPE on hazelcastInstance.shutdown. 

It would be better to call 'localInstanceRef.shutdown'. Then the world doesn't change underneath your feet.