add a loop to the emit phase
add protocol function to put multiple messages, ensuring their order
extend PutMessage and TakeMessage protocols to channels for backwards compatibility
WIP: add core.async to app

The input-queue is now and input-channel. Uses the async dataflow engine.