Fn literals

They're far more complex than I'd like them to be, but they're also awesome to have. :)

One thing I'm not sure about: the Clojure implementation uses `Var.pushThreadBindings` [[1]] and I think we have something similar (`push-binding-frame!`); do we need to do that too?

[1]: https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/LispReader.java#L631