Create GroupDissolvedEvent and react to it
This MR also makes the private group list react to incoming group invitations (once they are implemented).


Closes#736, #737
See merge request !392
Return to group after not inviting new members
This MR also closes the keyboard when returning from the message fragment.
Closes#735
See merge request !389
Fixed asynchronous Activity leaks in Fragments
If a Fragment has been detached its `getActivity()` method will return null, providing numerous crash possibilities within the app.
My approach to fixing this is to make Fragments use their own `runOnUiThreadUnlessDestroyed` method, which also checks if the Fragment has been detached before running the Runnable
Closes#714
See merge request !387
Use contact ID rather than messaging group ID to identify conversation
We originally used the private messaging group ID to identify the private conversation, but now that the conversation includes messages from multiple clients it's more appropriate to use the contact ID.
This refactoring isn't urgent - I've had the branch lying around for a while, but I'm putting it up for review because #734 will touch some of the same code.
See merge request !386
Add unit tests for KeyManagerImpl
This also creates a `TransportKeyManager` interface and a factory for that to be able to test things separately.
Closes#205
See merge request !380
Let only the creator invite new members to private groups
A little bug I noticed when reviewing the implementation of the invitation protocol.
See merge request !383
Improve QR code workflow slightly
* Improve wording so contacts know they need meet up to scan
and scan each other's codes
* Use consistent progress bar styles
Closes#348
See merge request !381
Implement UX for viewing the membership of a private group
This MR is the second and last MR to address #678. The first part is in !377.

Closes#678
See merge request !364
Implement UX for leaving a group
This MR also includes the creator's part of the UX for dissolving a group since it is almost the same.

Closes#671
See merge request !367