remote: Assert proper GIT_DIRECTION_XXXX values
remote: Warn the user when connecting with no url
remote: Don't parse missing urls as empty strings
remote: Relax the parsing logic even more

In order to be loaded, a remote needs to be configured with at least a `url` or a `pushurl`.

Given a remote in the config with neither of these entries, trying to git_remote_load() it, will return ENOTFOUND.
remote: Make git_remote_list() detect pushurl