x/ref: Switch v23_syncbase_Handle from void* to uintptr_t

The 'void*' for v23_syncbase_Handle is causing random crashes because
Go does some checks that the value points to some valid memory
address.

MultiPart: 2/2
Change-Id: Ie1414f5e7a6858027d8a2a8459935f9201918b69
diff --git a/SyncbaseCore/Source/Collection.swift b/SyncbaseCore/Source/Collection.swift
index 557c9be..229f85f 100644
--- a/SyncbaseCore/Source/Collection.swift
+++ b/SyncbaseCore/Source/Collection.swift
@@ -300,7 +300,7 @@
       let cLimitBytes = v23_syncbase_Bytes(
         p: unsafeBitCast(cLimitStr.p, UnsafeMutablePointer<UInt8>.self), n: cLimitStr.n)
       let callbacks = v23_syncbase_CollectionScanCallbacks(
-        handle: v23_syncbase_Handle(oHandle),
+        handle: v23_syncbase_Handle(unsafeBitCast(oHandle, UInt.self)),
         onKeyValue: { Collection.onScanKeyValue($0, kv: $1) },
         onDone: { Collection.onScanDone($0, err: $1) })
       v23_syncbase_CollectionScan(
@@ -321,7 +321,8 @@
   private static func onScanKeyValue(handle: v23_syncbase_Handle, kv: v23_syncbase_KeyValue) {
     let key = kv.key.toString()!
     let valueBytes = kv.value.toNSData()!
-    let handle = Unmanaged<ScanHandle>.fromOpaque(COpaquePointer(handle)).takeUnretainedValue()
+    let handle = Unmanaged<ScanHandle>.fromOpaque(
+      COpaquePointer(bitPattern: handle)).takeUnretainedValue()
     handle.onKeyValue(key, valueBytes: valueBytes)
   }
 
@@ -330,7 +331,8 @@
     if let e = err.toVError() {
       serr = SyncbaseError(e)
     }
-    let handle = Unmanaged<ScanHandle>.fromOpaque(COpaquePointer(handle)).takeRetainedValue()
+    let handle = Unmanaged<ScanHandle>.fromOpaque(
+      COpaquePointer(bitPattern: handle)).takeRetainedValue()
     handle.onDone(serr)
   }
 
diff --git a/SyncbaseCore/Source/Watch.swift b/SyncbaseCore/Source/Watch.swift
index b801500..28bf686 100644
--- a/SyncbaseCore/Source/Watch.swift
+++ b/SyncbaseCore/Source/Watch.swift
@@ -182,7 +182,7 @@
         let cPatterns = try v23_syncbase_CollectionRowPatterns(patterns)
         let cResumeMarker = v23_syncbase_Bytes(resumeMarker)
         let callbacks = v23_syncbase_DbWatchPatternsCallbacks(
-          handle: v23_syncbase_Handle(oHandle),
+          handle: v23_syncbase_Handle(unsafeBitCast(oHandle, UInt.self)),
           onChange: { Watch.onWatchChange($0, change: $1) },
           onError: { Watch.onWatchError($0, err: $1) })
         v23_syncbase_DbWatchPatterns(
@@ -202,7 +202,8 @@
   // the functions inside the passed handle.
   private static func onWatchChange(handle: v23_syncbase_Handle, change: v23_syncbase_WatchChange) {
     let change = change.toWatchChange()
-    let handle = Unmanaged<Watch.Handle>.fromOpaque(COpaquePointer(handle)).takeUnretainedValue()
+    let handle = Unmanaged<Watch.Handle>.fromOpaque(
+      COpaquePointer(bitPattern: handle)).takeUnretainedValue()
     handle.onChange(change)
   }
 
@@ -211,7 +212,8 @@
     if let verr: VError = err.toVError() {
       e = SyncbaseError(verr)
     }
-    let handle = Unmanaged<Watch.Handle>.fromOpaque(COpaquePointer(handle)).takeRetainedValue()
+    let handle = Unmanaged<Watch.Handle>.fromOpaque(
+      COpaquePointer(bitPattern: handle)).takeRetainedValue()
     handle.onError(e)
   }
 }
\ No newline at end of file