Clean slate after lots of offline design work.
First pass at source_c, sink_c, connection.

This is a very rough pass.

- These classes are incredibly coupled. I'm having trouble with allowing these
to be modified independently because it's unsafe. Calling something like
source_c::disconnect() would be catastrophic if it didn't cascade to
connection and then to sink. I can test the chaining with a mock. It's time
to let go of this classes-arise-mutually design because it's impossible to
test.