avatar: refactor avatar loading and caching
- use the same method everywhere to display an avatar
- move code to generate letter avatars to a separate crate
- use the generated avatar as a fallback till the real avatar is avaibile
Note: The avatar in room details dialog is borken but the dialog will be replaced soon. Also updating the username in the room history doesn't work, the room history needs a refactor to resolve some issues.