Custom cache annotations and AspectJ

This commit clarifies what should be done in order to use custom cache
annotations with AspectJ.

Issue: SPR-11503
Add more HttpHeaders constants for standard HTTP headers

Issue: SPR-12063
Change GenericConversionService to better handle enum

Prior to this commit, given an enum which implements some interface,
GenericConversionService would select the String -> Enum converter even
if a converter for String -> SomeInterface was registered.  This also
affected converters that were registered for String ->
SomeBaseInterface, when SomeInterface extended SomeBaseInterface.

This change modifies the behavior of the private method
getClassHierarchy() by placing Enum.class as late as possible, pretty
much the same way as Object.class is handled.

Issue: SPR-12050
Merge pull request #607 from dharaburda/SPR-12050

* SPR-12050:
  Change GenericConversionService to better handle enum