Restructure the documentation

Add drawings
enrich test code
Add sphinx and extensions as dev dependencies.
Introduce new structure (requirements, development, test)
Update readme and installation
Update unit tests for user.models
Extend tests and fix some minor bugs