clone: remove more options from basic clone

The basic clone function is there to make it easy to create a "normal"
clone. Remove a bunch of options that are about changing the remote's
configuration.
clone: re-add a way to ignore certificate errors

This used to be done via transport flags, which was removed in a
previous commit.
clone: const-ify checkout options

The removal of many options which lead to the direct usage of the
user's checkout options means we should make sure they remain const.
clone: re-allow using a custom remote name

This is a small thing that by itself doesn't quite justify making the
user use clone_into.
clone: bring back NULL as defaults

This wasremoved as part of the large culling a few commits ago.
clone: mention clone_into in the clone documentation

Make the difference more explicit.
remote: add some comments to the callback struct

Hopefully clear up what they're for.
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.
clone: put the callbacks struct directly in the clone options

There's no need for this to be a pointer to somewhere else.
Merge pull request #1855 from libgit2/cmn/clone-into

An alternative for 'clone' with options
Support cancellation in push operation

This commit adds cancellation for the push operation. This work consists of:

1) Support cancellation during push operation
    - During object counting phase
    - During network transfer phase
        - Propagate GIT_EUSER error code out to caller
2) Improve cancellation support during fetch
    - Handle cancellation request during network transfer phase
    - Clear error string when cancelled during indexing
3) Fix error handling in git_smart__download_pack

Cancellation during push is still only handled in the pack building and
network transfer stages of push (and not during packbuilding).
Fix broken online push tests
HTTP: handle "relative" redirects
Merge pull request #1889 from libgit2/relative-redirect

HTTP: handle "relative" redirects
commit: Introduce git_commit_message_raw()
Merge pull request #1887 from libgit2/ntk/topic/git_message_raw

commit: Introduce git_commit_message_raw()
Merge branch 'development' into blame

Conflicts:
	include/git2.h
Style tweaks and changes for code review feedback