Add a testing client and fix multiple bugs

From what it looks like, all callbacks are operating correctly now. The test client can
be started, and it will automatically interact with messages/actions/etc sent from
another client (like toxic).