Expose patch serialization to git_buf

Returning library-allocated strings from libgit2 works fine on Linux,
but may cause problems on Windows because there is no one C Runtime that
everything links against. With libgit2 not exposing its own allocator,
freeing the string is a gamble.

git_patch_to_str already serializes to a buffer, then returns the
underlying memory. Expose the functionality directly, so callers can use
the git_buf_free function to free the memory later.
Drop git_patch_to_str

It's hard or even impossible to correctly free the string buffer
allocated by git_patch_to_str in some circumstances. Drop the function
so people have to use git_patch_to_buf instead - git_buf has a dedicated
destructor.
Merge pull request #2069 from isilkor/patch_to_buf

Expose patch serialization to git_buf
Preserve tree filemode in index during checkout

Don't try to determine whether the system supports file modes
when putting the tree data in the index during checkout.  The tree's
mode is canonical and did not come from stat(2) in the first place.
Merge pull request #2070 from ethomson/checkout_filemode

Preserve tree filemode in index during checkout
Summarize empty messages
Merge pull request #2072 from ethomson/commit_summary

Summarize empty messages
Plug a small memory leak