Introduce client layer events for forums
The forum UI depended on sync layer events such as `MessageStateChangedEvent`.
Now, the forum client broadcasts its own high-level event (`ForumPostReceivedEvent`)
with the information the UI needs (`ForumPostHeader`).
Closes#310
See merge request !244
Database queries for metadata only returned it for messages that were delivered already.
However, there are cases (e.g. a pending message needs to be delivered) where
the validator needs to retrieve the metadata from the database.
For these cases, a special database query has been introduced.
The forum UI depended on sync layer events such as MessageStateChangedEvent.
Now, the forum client broadcasts its own high-level event (`ForumPostReceivedEvent`)
with the information the UI needs (`ForumPostHeader`).
Closes#310
Micro Blogs UI
**Attention:** This MR includes several other commits which are supposed to end up in separate MRs. I suggest that you review **per commit**. Once the first two commits have green light, I can split out the other commits into other MRs. This way I don't have to work myself through a long rebase chain every time I make a change to the bottom MR.
This MR is full of commits that introduce features that we will not be using initially. The last commit implements the Micro Blogs UI on top of the framework the first commits establish and hides/disables all future features for now.
I suggest we merge this as is and clean things up later when we have a clearer idea what features we will be doing eventually.





Closes#436
See merge request !214
Make it clearer who will be introduced
Show contact names under avatars before sending introduction to make it clearer who will be introduced.

Closes#356
See merge request !242
Show all Forum Invitations, not only the first one to prevent cut-offs and forks
This MR solves the problems outlined in #461 by always showing forum invitations, even if the user already subscribed to the forum.
Available Forums have been renamed to Forum Invitations in the UI:


Closes#461
See merge request !241
Set focus mode properly when scanning QR codes
This simple fix contributed by @m8r-v9bo74 fixed the issue on my Xperia
Pro that could never focus on the QR code before. Focusing and scanning
still works on my other test devices.
Closes#346
See merge request !243
Improve Account Setup Screen
* Explain what "account creation" means on first run (#151)
* Use hints instead of dedicated text views
* Move password strength meter up into the user's view
* Always move user's view to current input field
* Improve "Forgot Password" dialog






Please note that the dialog button colors will be changed in !214 to the official design. Here they have the old colors.
Closes#151, #207
See merge request !229
This simple fix contributed by @m8r-v9bo74 fixed the issue on my Xperia
Pro that could never focus on the QR code before. Focusing and scanning
still works on my other test devices.
Closes#346
* Explain what "account creation" means on first run
* Use hints instead of dedicated text views
* Move password strength meter up into the user's view
* Always move user's view to current input field
* Improve "Forgot Password" dialog
Closes#151
Simple Empty State Messages
This MR implements very basic and simple empty state messages for the
current features.
This is how it looks (note that the contact add FAB will be removed soon):




Closes#327
See merge request !236
Update Timestamps Every Minute
Yes by using `notifyDataSetChanged()` I am invalidating everything, but view binding is very fast and the RecyclerView is smart about it. I could parse the dataset and use `notifyItemChanged()` only on the elements that matter, but this is not generic and a lot more code which is not necessarily faster. I suggest we go with my simple and generic approach for now and optimize when we actually notice a performance problem.
Closes#455
See merge request !238
This commit addes a combined blog feed that shows all posts of all
subscribed blogs in the order the blog posts have been received.
For now, this commit also hides other blog functionality like adding
additional blogs and browsing individual blogs.
Closes#417
This allows for swiping left/right to read other posts by using
a ViewPager.
This hasn't been done as a separate activity, but with
fragments, so both can share the `BlogPersistentData` without
needing to reload it.
Closes#428
This does not yet support multiple identities. It just shows blogs
created by the first identity, but can easily be adapted for
multi-identity support.
Closes#410
Clicking the plus in the toolbar open the `CreateBlogActivity` which
allows the user to create a new blog. Only the first identity is
considered, but support for more identities can be easily added later.
The actual list of blogs in the My Blogs tab will be done in the next
commit.
Font Colors and Separate Themes
Once applied this commit will change the font colors according to the
design and move all themes into a dedicated file.
Closes#333
See merge request !228
Make timestamps prettier and more useful
Here's some example timestamps I have been testing with. That's how it will look like when this MR is merged:

Closes#230
See merge request !235