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.
Merge pull request #2543 from libgit2/cmn/known-transports

Clean up transport lookup