Opaque #[repr(C)] wrapper for #[repr(Rust)] types that can be passed by value over FFI

IMPORTANT Only types requiring 8 Byte alignment or less can be wrapped, and the C environment must align uint64_t to at least 8 Byte boundaries.

``` Rust use reprcwrapper::*;

[repr(C)]

pub struct OpaqueWrapper(reprcwrapper_t!(String));

[no_mangle]

pub extern "C" fn somefunc() -> OpaqueWrapper { OpaqueWrapper("hello".tostring().into()) } ```

Acknowledgment Thanks to @QuineDot, @H2CO3, and @bruecki for identifying unsound practices in earlier drafts of this crate.