This is a thread-safe reference-counted smart pointer with weak references.
The weak references don't prevent mutable access to the inner value,
Strong::borrow_mut
will always succeed as long as there is a single
Strong<T>
handle to the value that should be mutated.
Improve documentation, review the code (most importantly the atomic operations), make use of it.