Proper matching of raw generic types and generically typed factory methods

Also optimized getTypeForFactoryMethod's implementation for non-generic factory methods, and reduced calls to getResolvedFactoryMethod in order to avoid repeated synchronization.

Issue: SPR-11034
Provide meta-annotation support in the TCF

- Now using AnnotationUtils.getAnnotation() instead of
  Class.getAnnotation() where appropriate in the TestContext Framework.
- Now using AnnotationUtils.findAnnotation() instead of
  Class.isAnnotationPresent() where appropriate in the TestContext
  Framework.
- Introduced findAnnotationPrefersInteracesOverLocalMetaAnnotations() in
  AnnotationUtilsTests in order to verify the status quo.
- Introduced MetaAnnotationUtils and AnnotationDescriptor in the
  spring-test module.
- Verifying support for context hierarchies when @ContextConfiguration
  @ContextHierarchy are used as meta annotations.

Issue: SPR-7827
- AnnotationUtils.findAnnotationDeclaringClass() now supports
  meta annotations and interfaces.
- Overhauled and documented MetaAnnotationUtils.AnnotationDescriptor.
- @Ignore'd failing tests in ContextLoaderUtilsContextHierarchyTests.
- Introduced UntypedAnnotationDescriptor in MetaAnnotationUtils.
- Introduced findAnnotationDescriptorForTypes() in MetaAnnotationUtils.
- No longer traversing interface hierarchies when searching for
  annotation declaring classes.
- ContextLoaderUtils now uses MetaAnnotationUtils for looking up
  @ContextConfiguration and @ContextHierarchy as meta-annotations.
- ContextLoaderUtils now uses MetaAnnotationUtils for looking up
  @ActiveProfiles as a potential meta-annotation.
- DirtiesContextTestExecutionListener now uses AnnotationUtils for
  looking up @DirtiesContext as a potential meta-annotation.
- Introduced unit tests in DirtiesContextTestExecutionListenerTests.
- ProfileValueUtils now uses AnnotationUtils for looking up
  @IfProfileValue as a potential meta-annotation.
- ProfileValueUtils now uses AnnotationUtils for looking up
  @ProfileValueSourceConfiguration as a potential meta-annotation.
- TransactionalTestExecutionListener now uses AnnotationUtils for
  looking up @TransactionConfiguration and @Rollback as potential
  meta-annotations.
- TestContextManager now uses MetaAnnotationUtils for looking up
  @TestExecutionListeners as a potential meta-annotation.