Add lazy-monad (using clojure delay).

Pending: transformer. (will go in separated pr)

Now ready to review and merge. It works like state monad, always return delay instance and dereferencing it executes all computations.
It allows lazy composition of computations.

Is `with-context` needed here? Doesn't `core.bind` set it already?