Fix #100: Allow joining unlisted rooms.

chat.join():
1. Check if room is in xmpp.room.available.
2. If not, do xmpp.discoverRooms() and check again.
   (necessary to find newly created public rooms by title.)
3. If not, attempt to query it directly with xmpp.joinExistingRoom().
   Add it to xmpp.room.available if so, and refresh the menu.

xmpp.discoverRooms() ensures the current room remains in the list,
even if it is hidden and unlisted.

xmpp.leaveRoom() also refreshes the room list, to purge hidden
rooms or rooms that were destroyed by leaving them.
Fix #30: Allow creating new, instant rooms.

/create <room> will create a new room by joining it,
then set its title accordingly.
Cleanup: use jidFromRoomNick, remove old comment.
Addon to #30: Handle room creation/conf errors.

Both the creation of a room and its configuration may fail.

The first case is treated by eventPresenceError (just like
joining a room the user is banned from); the second occurs
when a field that we wanted to set is not on the configuration form.