Reduce the number of unnecessary objects in pushed packs
Convert enqueue_object to a function
Fix dumb mistake in the comparison function
branch: rename 'tracking' to 'upstream'

The term 'tracking' is overloaded. Help distinguish what we mean by
using 'upstream' for this part of the library.
branch: refactor git_branch_remote_name

Return the size we'd need to write to instead of simply an
error. Split the function into two to be used later by the upstream
configuration functions.
Fix submodule dirty states not showing if submodules comes before files, or there are only dirty submodules but no changed files

GIT_DIFF_PATCH_DIFFABLE was not set, so the diff content was not shown

When submodule is dirty, the hash may be the same, but the length is different because -dirty is appended

We can therefore compare the length or hash
Fix clang warnings and improve checks
Tests and more fixes for submodule diffs

This adds tests for diffs with submodules in them and (perhaps
unsurprisingly) requires further fixes to be made.  Specifically,
this fixes:

- when considering if a submodule is dirty in the workdir, it was
  being treated as dirty even if only the index was dirty.
- git_diff_patch_to_str (and git_diff_patch_print) were "printing"
  the headers for files (and submodules) that were unmodified or
  had no meaningful content.
- added comment to previous fix and removed unneeded parens.
Merge pull request #1460 from arrbee/fix-dirty-submodules-diff

Submodule diff tests and fixes
examples: Don't print weird characters
Merge pull request #1424 from phkelley/efficient_push

Reduce the number of unnecessary objects in pushed packs
object: Export git_object_dup
Notify '*' pathspec correctly when diffing

I also moved all tests related to notifying in their own file.
Merge pull request #1367 from yorah/fix/pathspecs_behaviour

Correctly return matched pathspec when passing "*" or "."
branch: add more upstream configuration management

Add functions to set and unset the upstream configuration to
complement the getter we already have.
Merge pull request #1450 from carlosmn/branch-upstream

Branch upstream configuration