Replace CustomCacheKeyGenerator with Spring 4.0.3 implementation

In the interest of sticking with upstream, replace CustomCacheKeyGenerator with org.springframework.cache.interceptor.SimpleKeyGenerator from Spring 4.0.3.

We can't just refer to one from Spring 4.0.3 because this plugin will be used with previous versions of Spring.
Update with changes made upstream in Spring

Update for changes made upstream in Spring in this commit: https://github.com/spring-projects/spring-framework/commit/e50cff47c1a9a955f7814e12e64dce93eb43aed0
Use the bundled key generator only if necessary

Since Spring 4.0.3 includes the fix for the bug that the custom key generator works around, and the custom key generator is identical to the one in Spring 4.0.3, just use the Spring 4.0.3 one if possible.
Merge pull request #7 from candrews/patch-1

Replace CustomCacheKeyGenerator with Spring 4.0.3 implementation