reflog: move the reflog implementation into refdb_fs

References and their logs are logically coupled, let's make it so in
the code by moving the fs-based reflog implementation to live next to
the fs-based refs one.

As part of the change, make the function take names rather than
references, as only the names are relevant when looking up and
handling reflogs.
reflog: add a convenience append function

Provide a function that reads a reflog, performs an append and writes back to the
backend in one call.
reflog: bring _append and _drop back to the frontend

These functions act purely on the reflog data structure.
indexer: do multiple passes over the delta list

Though unusual, a packfile may contain a delta whose base is a delta
that comes later. In order index such a packfile, we must not give up
on the first failure to resolve a delta, but keep it around.

If there is a pass which makes no progress, this indicates that the
packfile is broken, so fail accordingly.
pack: move the object header function here
indexer: fix thin packs

When given an ODB from which to read objects, the indexer will attempt
to inject the missing bases at the end of the pack and update the
header and trailer to reflect the new contents.
net: advertise our support for fixing thin packs
indexer: inject one base at a time

There may be multiple deltas referencing the same base as well as OFS
deltas which rely on a thin delta. Deal with both at the same time by
injecting a single object and going back up to the main
delta-resolving loop.
indexer: clearer stats for thin packs

Don't increase the number of total objects, as it can produce
suprising progress output. The only addition compared to pre-thin is
the addition of local_objects to allow an output similar to git's
"completed with %d local objects".
Rename the ssh credentials

The names from libssh2 are somewhat obtuse for us. We can simplify the
usual key/passphrase credential's name, as well as make clearer what the
custom signature function is.
Set the correct dependencies in the pkg-config file

When linking statically, the including project needs to know what the
current library build depends on so they can link to it. Store this
information in the pkg-config file.

While here, remove claims that users need to link to zlib or libcrypto.
README: add a note about the optional dependencies
examples: show used local objects in fetch

Show how many local objects were used to fix the thin pack in our fetch
example.
indexer: include the delta stats

The user is unable to derive the number of deltas in the pack, as that
would require them to capture the stats exactly in the moment between
download and final processing, which is abstracted away in the fetch.

Capture these numbers for the user and expose them in the progress
struct. The clone and fetch examples now also present this information
to the user.
transport: let the progress output return an error

There are any number of issues that can come up in the progress
callback, and we should let the user cancel at that point as well.
Merge pull request #1906 from libgit2/cmn/net-cb-errors

transport: let the progress output return an error
Merge pull request #1905 from libgit2/cmn/list-deps

Be explicit about dependencies
Really fix the pc file

It turns out that variables have function scope by default. Let's
really set -liconv and add a few libraries that were forgotten in
the previous commit.

We also need to special-case OSX, as they ship zlib but do not provide
a pkg-config file for it.
fix typos in README.md
Merge pull request #1907 from nikai3d/patch-1

fix typos in README.md