Try to get rid of SafeDispose() calls

`SafeDispose()` extension method takes care of ensuring the handle is valid before disposing it.

Let's try and get rid of this by moving the checks in `SafeHandleBase.ReleaseHandle()`