One-on-one chat fixes

Replaces #268. See comments there.
Which different models are you referring to? `Candy.Core.ChatUser` / `Candy.Core.Contact` or this random object vs `Candy.Core.ChatRoom`?

I'm adding a bunch of test coverage of what we already have and will use that as the basis for some refactoring. It would help to know how much we're prepared to change, though. You mentioned elsewhere that the current dev branch can be considered buildup to Candy 2.0. Does that give us license to basically break backward compatibility anywhere necessary? How will we handle plugins?