Performed some cleanup around PositionInGrid

+ Used new constructor introduced in last commit everywhere, and marked
  property setters private.
+ Added unit tests for methods that were extracted to it from elsewhere
  and did not yet have their own tests.
Introduced IChannel interface

This is the first step toward a paradigm in which an IChannel will be
injected into classes that need to publish rather than one or more
IConsume<>.