Zero memory for major objects before freeing

By zeroing out the memory when we free larger objects (i.e. those
that serve as collections of other data, such as repos, odb, refdb),
I'm hoping that it will be easier for libgit2 bindings to find
errors in their object management code.
Mutex init can fail

It is obviously quite a serious problem if this happens, but mutex
initialization can fail and we should detect it.  It's a bit like
a memory allocation failure, in that you're probably pretty screwed
if this occurs, but at least we'll catch it.
Add safe memset and use it

This adds a `git__memset` routine that will not be optimized away
and updates the places where I memset() right before a free() call
to use it.
Merge remote-tracking branch 'arrbee/minor-paranoia' into development
util: It's called `memzero`