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 git2.h not including threads.h anymore
Fix GCD typo
Merge pull request #2708 from phatblat/pr/threading-doc

Fix typo in THREADING.md
Merge pull request #2707 from swisspol/fix_include

Fixed git2.h not including threads.h anymore
Plug possible leak in the openssl locks
Merge branch 'openssl-lock-free'
branch: consider an empty upstream remote config as not found
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