Fix channel deletion for private channels (fixes #304)
Fix channel deletion for private channels (fixes #304)

This change makes it so that:
 * an attempt to delete a private channel no longer attempts to /leave
   it first
 * an attempt to /leave a private channel leaves only if the user is not
   the last member; otherwise it deletes the private channel, in
   accordance with the server's requirement that the last user delete
   rather than leave
 * /delete-channel and /leave no longer remove the channel from
   the state, since that is now (correctly) done in response to the
   WMChannelDeleted websocket event

This change also unifies the code paths for leaving and deleting
channels, since there is a lot of overlap.

matterhorn-chat/matterhorn,aisamanra/matterhorn