Remove dependencies on Clojure's internal Java classes

According to the release notes of Clojure 1.6.0 [1], the public Java API of
the Clojure runtime consists of two classes:

 * clojure.java.api.Clojure
 * clojure.lang.IFn

All other classes are to be treated as internal implementation details.
This change basically moves everything over to the two blessed classes,
except for a few cases where I'm still extending AFn because I didn't
want to duplicate all that boilerplate.

[1] https://github.com/clojure/clojure/blob/master/changes.md#21-java-api