rc: fix drop to transmute to the correct ~RcBox<T> and not ~T

There is no behavioral difference if unique boxes are freed with free(),
but if the size were to matter this would be bug.
rc, arc: add support for by-value copy-on-write and try-to-write

The try_ functions don't require Clone, but they do nothing if rc > 1

The try_unwrap and value take and return by-value instead of &mut