Merge of JCache eviction API and implementation (Serkan & Chris)

- Changed some classnames to a more appropriate name
- Moved some classes (like abstract base implementations into the api since those are not really implementation specific)
- Moved general purpose classes to their own packages (named by type)
- Added javax.cache.configuration.Factory support for EvictionStrategy and EvictionPolicyStrategy to provide user customizable eviction policies
- Added hook methods for custom user policies to update internal policies state
- Removed static factories / helper / provider classes due to the use of the above mentioned factories
- Renamed CacheMaxSizeConfig to CacheEvictionConfig to reflect the more general usage of that class to provide custom user policy support
- Refactored the ConcurrentReferenceHashMap subclasses for more general purpose (made it possible to implement the EvictionCandidate extension in a cleaner way)
- Added lots of Javadocs to the api classes
- Added the single threaded partition size trick to prevent iterating the segments
- Changed Spring and Hazelcast XML / Config objects