[WIP] Refactored the update of the hashed password and canonical fields 

The responsibility of updating these fields is moved to dedicated services instead of being in the UserManager, allowing to inject them in the Doctrine listener and the validator initializer without any issue about circular dependencies.

This PR currently includes #1612 as they would conflict together otherwise. I will need to be rebased once the other PR is merged.

This is a BC break for people extending the user manager (or instantiating the existing one themselves, but this would be weird) as the constructor signature has changed.