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
This is dangerous because you are consuming the interrupt status of the thread. Probably better to restore the interrupt status. If this thread would run into another blocking operation, with a restored interrupt, it will immediately jump out of that one instead of going to block.