SPR-8696, SPR-11316: custom key generator and cache manager

This change brings more features to the `Cacheable`, `CacheEvict` and `CachePut` annotations.

A custom `CacheManager` and/or `KeyGenerator` can be set *per cache operation*. If the parameter is set, we default as we did before to the global `CacheManager` and `KeyGenerator` respectively.