MessageDirector: Initialize m_range_susbcriptions with an empty set.
Check that iterators from range.find(k) are not range.end().
MessageDirector: Fix inaccurate checking.
Re-arrange so both should_add_upstream and should_remove_upstream are called AFTER internal processing.
MessageDirector: Add clarity by defining a channel_t type.
MessageDirector: Rearrange upstream control messages to allow for corrected, more complex logic.
TODO: Repeat the should_add_upstream -> subscribe_upstream conversion for should_remove_upstream
TODO: Satsify unit tests.