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
commit: Introduce git_commit_message_raw()
Merge pull request #1887 from libgit2/ntk/topic/git_message_raw

commit: Introduce git_commit_message_raw()
Style tweaks and changes for code review feedback
Merge pull request #1888 from jamill/network_cancellation

network cancellation improvements