add a `NonManaged` kind

Closes #10869
stop treating `Rc` cycles as unsafe
add a strong/weak reference counted pointer type