Returning a channel is now the method for serving async requests

Where we we would previously use with-pause and futures for serving async
requests, we now use core.async channels. When an enter function returns
a channel, the interceptor plumbing kicks off its own go-block to pull
from that channel. Once a new context is pulled from that channel
interceptor-chain execution is resumed and a response is returned.
Temporarily add an core.async-enabled service project

To try it out "lein run" in the async-ftw project then run "curl
localhost:8080". The response you see has been return via a channel in
the async-to-the-max interceptor of
./async-ftw/src/async_ftw/service.clj