This means the Context becomes a struct following the normal Rust
conventions where when it is created it is usable. This will over
time allow removing a lot of runtime checks and simplify code. Many
members will no longer need to be Options or similar.
The C API needs to remain compatible so hides the implementation of
this behind another struct which can be opened and closed.
* refactor(contact): rename and rusty memory allocations
* refactor(contact): use enum to indidcate origin
* refactor(contact): safe blocking and unblocking api
* refactor(contact): only safe and no more cstrings