All PresenceError is a join error

We only send presence when joining, so any error is a failure to join.

Also report error text if there is any.

Closes #2
When only "not joined" message is delivered, be more helpful

As suggested in #3
Check if someone is in the room before saying the join

It seems GTalk repeatedly sends presence to the room, even when
already joined, which was causing many extra messages.

Closes #4
Better error recovery when connection goes down
Use BasicPrelude, reformat import list
Fix many warnings
Command to list bookmarked rooms
Bookmark every room we join
Join/leave messages
Show participants on join
Dedup the who list
Improvements to the copy
Command to list room participants
Join password-protected room by invitation
Add owners to members only rooms during invite
Create rooms as members-only
Send "failed to join" message on MUC join error of any kind
Fix room leaving
Better part message