Re-shuffling code partially using events to further decouple roster, xmpphandler, and friendshandler