Track main roster in Candy

This adds a main roster to Candy to track user contacts, based on the Strophe roster plugin. It also fetches the roster on connect/attach in order to comply with RFC6121. This is just the basics, more is coming later today:

* [x] Roster versioning
* [x] Aggregate presence for a user for display in the UI.
* [ ] VCard data maintained for roster entries as the basis of [a user profile view](https://github.com/candy-chat/candy/pull/272)
* [ ] Association between `Candy.Core.Contact` and `Candy.Core.ChatUser` models where we have a MUC user's real JID (`Candy.Core.ChatUser.getContact()`).
* [ ] Inclusion of `Candy.Core.Contact` or `Candy.Core.ChatUser` instance in events where we currently pass around only a JID, to allow for more intelligent implementation of [one-on-one chats with contacts](https://github.com/candy-chat/candy/pull/268).
To permit injecting a mock connection. I guess we could instead init first then mock the connection Candy creates. Thoughts?