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`.

ENOTFOUND will be returned when trying to git_remote_load() a remote with neither of these entries defined.
vector: Teach git_vector_uniq() to free while deduplicating
remote: Make git_remote_list() detect pushurl