Having this as an instance method makes it easier to override in the
prepended `EE` module.
If we try to override this method on the module itself, it would not
be overridden correctly, depending on the load order.
This makes sure that we always have a repository type when trying to
parse a repository from a path.
This is needed because sometimes we want to perform access checks as
if the project already existed, for example when creating a project on
push.
Before this we were only doing that when accessing git over http, this
makes sure it also works correctly when accessing git over SSH
This changes the repository type from a binary `wiki?` to a type. So
we can have more than 2 repository types.
Now everywhere we called `.wiki?` and expected a boolean, we check
that type.
This new param allows us to share project information between components
that don't share or don't have access to the same filesystem
mountpoints, for example between Gitaly and Rails or between Rails and
Gitlab-Shell hooks. The previous parameters are still supported, but if
found, gl_repository is prefered. The old parameters should be deprecated
once all components support the new format.