Bugfix: Client pure virtual method call

**Bug:** Daemons with ClientAgents would occasionally call a pure virtual method and receive SigAbort.
**Problem:** Participants could be deleted by the main thread after the routing thread already put them into a list to receive the datagram currently being processed
1. `(MD Thread)` Lookup Subscribers for Channel
2. `(ASIO Thread)` Delete a Subscriber
3. `(MD Thread)` Call HandleDatagram on Subscriber

**Fix:** Participants should not delete themselves (it is somewhat strange in the first place to have an object delete itself).  Instead, they will call a participant method `terminate()` which will remove their subscriptions, send post removes, etc ,etc, and mark them for deletion.  Objects marked for deletion will be removed at a datagram is routed or when the message director destructs.

**N.B.** Participants which can receive datagrams from multiple threads (ie. Clients, NetworkParticipants) should take special care to ignore messages if `participant.terminate()` has already been invoked.