Add support for :pre/:post conditions in functions.

Adds tests (for clj + cljs) for :pre/:post on a function; Adds preprocessing of :pre/:post to body handling, copied from clojure.core/fn