Fix bug where channels were not correctly preserved

Closes #80.
Make Server its own service without depending on Channel
Distinguish connected and parted tabs
Add Server.clear() and fix tests
Clear channel data when the user parts it
Add JOIN command