ClojureScript game loop, loosely based on Racket's big-bang and implemented on top of core.async