Move PasswordHasher Init to Lazy Loading

As the `User` can `UserInfo` objects are instantiated quite often. There
could be unneeded performance impact.

- Change to lazy load in the `User` model
- Remove from `UserInfo` as the `User` model is already instantiated and
  available to the `UserInfo` model via `UserInfo::getUserObject()`
- Corrent issue with `$hasher` was not yet created.
Add PHPdoc to getUserPasswordHasher
Fix uninstantiated User object in static method

- Do not use `User` object hash object as not yet instantiated
Fix typo in getUserPasswordHash