Add support for metadata as Java annotations

Rich Hickey introduced support for Java annotations on definterface,
deftype, and defrecord types on 23 April, 2010¹.

Unfortunately, since the Clojure compiler allows the use of unquoted
symbols in metadata, annotations of the form

    ^{ClassSymbol value}

are only interpreted as annotations when ClassSymbol resolves to an
imported class.

Since a compiler error is not generated in either case, we must walk any
forms that may contain annotations and force the compiler to resolve
them.

We already walk the body once to dequalify erroneously qualified
symbols, so this patch hooks into this traversal to collect a set of
class symbols that may be interpreted as annotations.

This set of symbols is appended to the candidate body so that they
become visible to the compiler during check-for-failure.

It is possible that metadata inside of a definterface/deftype/defrecord
form of the form ^{CapitalizedSymbol value} may be erroneously
interpreted as an annotation instead of just metadata of Symbol -> Any.

This is impossible to determine without user intervention, but since
most metadata keys are keywords, I think interpreting these entries as
annotations is a good bet.

Addresses #72

¹ https://groups.google.com/forum/#!topic/clojure/0hKOFQXAwRc
Match aliased definterface/deftype/defrecord symbols

For instance, schema.core/defrecord may be aliased as s/defrecord, so
find these references as well.

No support is offered for renames.
Merge branch 'java-annotations'

Fixes #72

* java-annotations:
  Match aliased definterface/deftype/defrecord symbols
  Add support for metadata as Java annotations