Permissions: re-introduced the `hide` negative permission

Allows to explicitly forbid users from accessing specific projects. This
commit also merges the `Project.accessible_by_user()` and the
`Project.for_username()` class methods, as the fallback mechanism has been
simplified.

Fixes #3345.
Cleanup: removed dead code