Avoid asserting to llvm that C++ ptr type bits are fully occupied

For example if hypothetically any of std::unique_ptr or std::shared_ptr
or std::weak_ptr contained any padding bits in their representation,
manipulating any of them by value in Rust as if they were fully
initialized pointers would be UB.
diff --git a/src/weak_ptr.rs b/src/weak_ptr.rs
index e29d30e..2c06d36 100644
--- a/src/weak_ptr.rs
+++ b/src/weak_ptr.rs
@@ -16,7 +16,7 @@
 where
     T: WeakPtrTarget,
 {
-    repr: [*mut c_void; 2],
+    repr: [MaybeUninit<*mut c_void>; 2],
     ty: PhantomData<T>,
 }