Allow any type of event to be encapsulated by an ordered upstream event

Refactored the OrderedDownstreamMessageEvent into an OrderedDownstreamChannelEvent so that any type of event can be sent in consideration of pipeline ordering. A use-case for sending channel events other than messages is for closing a channel (which is a state event). You may need to close the channel once the messages for a given pipeline have been flushed.

The OrderedDownstreamChannelEvent retains convenience constructors for sending messages as this is its most typical use-case.