Add async-channel appender and memory-sink

Add an appender that writes to a core.async channel.  The memory-sink
can be used to read the channel into an atom with bounded memory usage.

Closes #3