Sema: Ban unavailable deinits.
Destructors are always called if declared, so allowing deinit to be declared as
unavailable (or potentially unavailable) creates a type checking loophole that
allows unavailable code to execute at runtime:
```
class C {
@available(*, unavailable)
deinit {
print("Oops")
}
}
_ = C() // prints "Oops"
```
Resolves rdar://106409012 and https://github.com/apple/swift/issues/63854.