Supporting multiple objectives and TCP-like senders.

First cut at supporting heterogeneous senders. I had to De-templatify Rat, so that I could inherit Rat (and potentially other TCP-like senders in the future) from a common interface, SenderInterface. I couldn't figure out how to do it with templates enabled. Next, I detemplatified SenderGang, since a SenderGang can now contain different kinds of senders. This meant removing the exemplar, and replacing it with an rvalue reference to an already constructed sender list. Also, I couldn't make references to SenderInterface work, and so had to resort to a unique_ptr.