Rather than an explicit unregister, what if `SmartSubtransportRegistration<T>` implemented `IDisposable` and unregistered on `Dispose()`?

```csharp
using (var httpRegistration = LibGit2.RegisterSmartSubtransport<MockSmartSubtransport>("http://", 2))
using (var httpsRegistration = LibGit2.RegisterSmartSubtransport<MockSmartSubtransport>("https://", 2))
{
    ...
```