Add proper error handling for Close(), implemented RetryableClose() and a new ScopedVDSHandle helper class for C++
- Add proper error handling for Close() and implement a RetryableClose() that doesn't proceed with deleting the handle if an error occurs.
- Added a ScopedVDSHandle helper class for C++ that is more convenient to use than a unique_ptr with a custom deleter that calls Close() and also has explicit Close() and RetryableClose() methods.
- Rewrote all tools and tests to use the new ScopedVDSHandle class instead of unique_ptrs.