fileops: stat() before open()ing in git_futils_readbuffer_updated()

This reverts refactoring done in 13224ea4aad9a1b3c9cc4c992ceaea9af623e047
that introduces a performance regression for NFS when reading files that
don't exist. open() forces a cache invalidation on NFS, while stat()ing a
file just uses the cache and is very quick.

To give a specific example, say you have a repo with a thousand packed
refs. Before this change, looking up every single one ould incur a thousand
slow open() calls. With this change, it's a thousand fast stat() calls.
Respect GIT_SSL_NO_VERIFY and http.sslVerify
sha1_lookup: do not use the "experimental" lookup mode
sha1_lookup: Hello my name is MSVC and how do I pointer
oid: Helper for old-school hashcmp
Test SSH in travis

Set up the ssh credentials so we are able to talk to localhost and
issue git commands. Move to use a script, as the command list is
getting somewhat long.

While here, delay installing valgrind until we need it, as it and its
dependencies are by far the largest downloads and this allows us to
start compiling (and failing) faster and we only incur this cost when
the test suite runs successfully.
remote: relax the url rules

Accept any value for the remote's url, including an empty string which
we used to reject as invalid configuration.

This is not quite what git does (although it has its own problems with
such configurations) and it makes it harder to fix the issue, by not
letting the user modify it.

As we already need to check for a valid URL when we try to connect to
the network, let that perform the check, as we don't need to do it
anywhere else.
Merge pull request #1782 from libgit2/vmg/no-lookup

Do not use the "experimental" lookup mode
Merge pull request #1781 from brodie/brodie/stat-before-open

fileops: stat() before open()ing in git_futils_readbuffer_updated()
Merge pull request #1774 from libgit2/test-ssh

Test SSH in travis
Merge pull request #1783 from libgit2/cmn/relax-remote

remote: relax the url rules
Merge pull request #1780 from phkelley/development

Respect GIT_SSL_NO_VERIFY and http.sslVerify
Commit 7affc2f7 removed var initialization

That commit accidentally removed the initialization of the "start"
variable giving undefined results for the host extraction from the
url input.
sha1-lookup: This assert was correct