cps from http://www.slideshare.net/borgesleonardo/continuation-passing-style-and-macros-in-clojure-jan-2012