JCache improved concurrency of CacheManager and CacheProvider impls

CacheManager and CacheProvider removed sync
CacheRecordStore improved checkstyle
CacheStatistics added to ICache and impl for server mode
The shutdownHazelcastInstance is racy:

```
 protected void shutdownHazelcastInstance() {
if (hazelcastInstance != null) {
hazelcastInstance.shutdown();
}
```
The problem here is that immediately after the hazelcastInstance!=null check, another thread could have set the value to null because it also was doing a shutdown. And this can lead to a NPE in the close method.

I would fix it by introducing an AtomicBoolean 'closed' you do a compareAndSwap(false,true) at the beginning of the close method. If it is already closed, the method can exit immediately. Otherwise you can continue with the close implementation. And the nice advantage is that you don't need to deal with this particular occurrence of the race problem I described in the beginning of this message since only 1 thread can actual do the close.
hazelcastInstance = null;
}