remote: verify there is a push foreach callback set
remote: add test for pushing and deleting with the local transport
local: adjust to the common refspec parser

We no longer have NULL strings, but empty ones and duplicate the sides
if necessar, so the first check will never do anything.

While in the area, remove unnecessary ifs and early returns.
ignore: adjust test for negating inside a dir

Given

    top
    !top/foo

in an ignore file, we should not unignore top/foo. This is an
implementation detail of the git code leaking, but that's the behaviour
we should show.

A negation rule can only negate an exact rule it has seen before.
ignore: match git's rule negation rules

A rule can only negate something which was explicitly mentioned in the
rules before it. Change our parsing to ignore a negative rule which does
not negate something mentioned in the rules above it.

While here, fix a wrong allocator usage. The memory for the match string
comes from pool allocator. We must not free it with the general
allocator. We can instead simply forget the string and it will be
cleaned up.
doc: add documentation to all the public structs and enums

This makes them show up in the reference, even if the text itself isn't
the most descriptive.

These have been found with

    grep -Przon '\n\ntypedef struct.*?\{' -- include
    grep -Przon '\n\ntypedef enum.*?\{' -- include
notes: move the notes name argument

Make it consistent between git_note_create() and git_note_remote() by
putting it after the repository.
notes: fix comments for git_note_next()

The iterator is the last argument. There is also no returned notes, just
ids, so the comment about freeing is out of place.
Merge pull request #2747 from libgit2/cmn/notes-consistency

Notes API consistency fixes
Merge pull request #2730 from libgit2/cmn/local-push

Adjust the local transport for the common refspec parser
Merge pull request #2748 from libgit2/cmn/doc-all

doc: add documentation to all the public structs and enums
Merge pull request #2746 from libgit2/cmn/neg-ignore-dir

Fix negative ignores withing ignored dirs