Get more paranoid when clearing refcount signature

This adds a GIT_REFCOUNT_SIGNATURE_FREED that we explicitly clear
the refcount signature to when freeing the data.  This may in some
cases make it easier to distinguish between reusing freed memory
vs using random memory.

This does make the validation checks more costly because we have
to check with separate assertions so we can distinguish between
the various error cases.  I would consider adding a
-DEXTRA_PARANOID define that allows you to toggle
GIT_REFCOUNT_VALIDATE between this more thorough test and a
quicker single assertion that the point is non-NULL with a valid
signature.