Track main roster

* Request our roster when we connect, before sending initial presence, according to http://xmpp.org/rfcs/rfc6121.html#roster-login.
* Emit events when the roster is fetched/updated
* Aggregate status for multiple resources
* Permit bootstrapping roster from cache (roster versioning) via options to Candy init
* Associate a MUC ChatUser with its Contact from the main roster if they are not anonymous and are present in our roster
* Add basic tests for processing room presence

Closes #287
One on one messages should be opened in a single tab regardless of the resource they came from
Messages to an individual contact should be directed to the full JID he last used to send me a message

In case I haven't yet received a message from him, I will send to his bare JID
Reset 1-on-1 target JIDs on presence
Release resource lock when receiving a message from an alternative JID
Direct one-on-one chats opened from a MUC to a user's real JID if we know it
Detect messages from room JIDs properly