Channels for event flow

Flume supports persistent as well as in-memory channels. A channel provides a layer of indirection for flume events/messages and supports multiple patterns for the way the events/messages are relayed to the sink from the channel.