clean up the `Rc` type and move it to libstd

I've left out a way to construct from a `Send` type until #9509 is fixed. I am confident that this interface can remain backwards compatible though, assuming we name the `Pointer` trait method `borrow`.

When there is a way to convert from `Send` (`from_send`), a future RAII-based `Mut` type can be used with this to implemented a mutable reference-counted pointer.