Fix missing object in tests/resources/crlf by changing the tail commit
remote: introduce git_remote_push()

This function, similar in style to git_remote_fetch(), performs all the
steps required for a push, with a similar interface.

The remote callbacks struct has learnt about the push callbacks, letting
us set the callbacks a single time instead of setting some in the remote
and some in the push operation.
push: move main test function to git_remote_push()

We have the step-by-step method in the initialization function as we
want to remove references based on the list of references which are
already there, and we can use the convenience function for testing the
main push.
remote: use configured push refspecs if none are given

If the user does not pass any refspecs to push, try to use those
configured via the configuration or via add_push().
Update message for error during push

When attempting to update a reference on a remote during push, and the
reference on the remote refers to a commit that does not exist locally,
then we should report a more clear error message.
Merge pull request #2608 from libgit2/cmn/remote-push

Provide a convenience function `git_remote_push()`
Merge pull request #2654 from linquize/missing-obj

Fix missing object in tests/resources/crlf by changing the tail commit
Remove two completed projects from the list
remote: clarify which list of references _ls() returns

Make it clear that this is not the ls-remote command but a way to access
the data we have and how long it's kept around.
remote: don't say we free the remote on disconnect

On disconnect we simply ask the transport to close the connection, we do
not free it.
Fix for memory leak issue in indexer.c, that surfaces on windows
fetch: clear the connection data on close

When we fetch twice with the same remote object, we did not properly
clear the connection flags, so we would leak state from the last
connection.

This can cause the second fetch with the same remote object to fail if
using a HTTP URL where the server redirects to HTTPS, as the second
fetch would see `use_ssl` set and think the initial connection wanted to
downgrade the connection.
travis: disable the cert callback on OSX

The sshd on OSX has stopped responding to the setting which this test
assumes is there, so let's disable it until we can figure out what's
happening.
Merge pull request #2722 from libgit2/cmn/disable-ssh-check

travis: disable the cert callback on OSX
Merge pull request #2719 from libgit2/cmn/fetch-twice

fetch: clear the connection data on close
Merge pull request #2717 from libgit2/cmn/remote-ls

Clarify the git_remote_ls() documentation
Merge pull request #2713 from libgit2/jamill/push_fetch_first

Update message for error during push
Run shell scripts through shellcheck
odb: `git_odb_object` contents are never NULL

This is a contract that we made in the library and that we need to uphold. The
contents of a blob can never be NULL because several parts of the library (including
the filter and attributes code) expect `git_blob_rawcontent` to always return a
valid pointer.
Merge pull request #2724 from libgit2/vmg/empty

odb: `git_odb_object` contents are never NULL