transport: distinguish between unknown and unsupported transports

Even when built without a SSH support, we know about this transport. It
is implemented, but the current code makes us return an error message
saying it's not.

This is a leftover from the initial implementation of the transports
when there were in fact transports we knew about but were not
implemented.

Instead, let the SSH transport itself say it cannot run, the same as we
do for HTTPS.
transport: return ENOTFOUND for HTTPS and SSH when they're not supported

The previous commit makes it harder to figure out if the library was
built with support for a particular transport. Roll back some of the
changes and remove ssh:// and https:// from the list if we're being
built without support for them.
remote: get rid of git_remote_valid_url()

It does the same as git_remote_supported_url() but has a name which
implies we'd check the URL for correctness while we're simply looking at
the scheme and looking it up in our lists.

While here, fix up the tests so we check all the combination of what's
supported.
remote: test for supported URLs in a single place

Instead of using ifdefs to run the tests, use them to set when we expect
to support a particular scheme and always have the tests in the code.
Several CppCat warnings fixed
Introduce git_path_make_relative
Introduce option to use relative paths for repository work directory

Teach git_repository_init_ext to use relative paths for the gitlink
to the work directory. This is used when creating a sub repository
where the sub repository resides in the parent repository's
.git directory.
Merge pull request #2552 from KindDragon/master

Several CppCat warnings fixed
Merge pull request #2530 from libgit2/jamill/relative_gitlink

Teach repository to use relative paths for git symbolic links
Merge pull request #2543 from libgit2/cmn/known-transports

Clean up transport lookup