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().
push: use the common refspec parser

There is one well-known and well-tested parser which we should use,
instead of implementing parsing a second time.

The common parser is also augmented to copy the LHS into the RHS if the
latter is empty.

The expressions test had to change a bit, as we now catch a bad RHS of a
refspec locally.
Fixed a couple Clang warnings
Fixed active_refspecs field not initialized on new git_remote objects

When creating a new remote, contrary to loading one from disk,
active_refspecs was not populated. This means that if using the new
remote to push, git_push_update_tips() will be a no-op since it
checks the refspecs passed during the push against the base ones
i.e. active_refspecs. And therefore the local refs won't be created
or updated after the push operation.
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 #2699 from swisspol/fix_warnings

Fixed a couple Clang warnings
Merge pull request #2693 from libgit2/cmn/push-refspec-refactor

push: use the common refspec parser
Merge pull request #2671 from swisspol/remote_create_fix

Fixed active_refspecs field not initialized on new git_remote objects
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.
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