Wrap the raw pointers exposed across the bridge as named types that approximate
Swift's OpaquePointer?. Parameterize NativeHandleOwner with the native handle
type.
Convert the *Key and keyPair properties on *PreKeyRecord to throwing
methods.
Since the usual constructor is strongly typed, these should only throw
when the serialized data is corrupted. But that is a possibility.