Introduce git_cred_ssh_interactive_new()

This allows for keyboard-interactive based SSH authentication
Make git_cred_ssh_custom_new() naming more consistent
Replace void * with proper callback types
Fix inconsistent use of lower-case and upper-case names for macros
Use CHECK_C_COMPILER_FLAG to determine if the compiler supports a flag

This simplifies platform/compiler dependent checks where we optionally
enable features or disable warnings.
Only disable deprecation warnings on Apple for OpenSSL
Only zero sensitive information on destruction (and memory actually allocated by us)
Merge pull request #2273 from jacquesg/ssh-interactive

Add support for SSH keyboard-interactive authentication
Introduce AddCFlagIfSupported CMake macro
sysdir: free the path if we cannot find the file

Returning an error cleared the buf, but this operation does not free the
memory associated with it. Use git_buf_free() instead.
attrcache: fix use-after-free

Reported by coverity.
Merge pull request #2275 from jacquesg/apple-warning

Check for compiler flag support instead of checking for a platform
Fix reset for staged deletes
Fix some coverity-found issues
Merge pull request #2286 from libgit2/rb/fix-reset-staged-delete

Fix reset for staged deletes
Merge pull request #2287 from libgit2/rb/moar-coverity-fixes

Fix some issues from the last Coverity scan
remote: provide read access to the callback structure

This should make it easier for bindings to dynamically override their
own callbacks.
transports: allow the creds callback to say it doesn't exist

Allow the credentials callback to return GIT_PASSTHROUGH to make the
transports code behave as though none was set.

This should make it easier for bindings to behave closer to the C code
when there is no credentials callback set at their level.