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.
- @BeforeTransaction and @AfterTransaction now support ANNOTATION_TYPE
  as a target, allowing them to be used as meta-annotations.
- TransactionalTestExecutionListener now uses AnnotationUtils for
  looking up @BeforeTransaction and @AfterTransaction as potential
  meta-annotations.
- Introduced TransactionalTestExecutionListenerTests.
- @Repeat and @Timed now support ANNOTATION_TYPE as a target, allowing
  them to be used as meta-annotations.
- SpringJUnit4ClassRunner now uses AnnotationUtils for looking up
  @Repeat and @Timed as potential meta-annotations.
- Moved all remaining logic for building the MergedContextConfiguration
  from the DefaultTestContext constructor to
  ContextLoaderUtils.buildMergedContextConfiguration().
- Verified meta-annotation support for @WebAppConfiguration and
  @ContextConfiguration.