- add user avatar loader
- add user avatar disk cache
- add user model
- a lot of refactoring
- other minor changes