CacheProxy refactored, cleaned up

* CacheProxy refactored into three classes. 
* CacheProxy related checkstyle issues fixed. 
* Code duplicates removed.
* LoadAll async behavior is fixed.
* ICache doc improved
* ICache API addition, two async methods
I'm a bit confused about the correctness of compeltionRegistrationId. It isn't volatile, so a potential JMM issue here. And I'm not clear of the registerCompletionListener can be called by multiple threads, if so.. then you also have a potential race problem here: imagine that 2 threads at the same time are going to call this method. Then both threads could conclude the completionRegistrationListener is null and you end up with 2 event listeners.

This can potentially lead to a memory leak since both of them are registered with the service, but only one will ever be unregistered.