Add is_unique(), try_unwrap(), try_get_mut() to alloc::rc

Add a few new free functions to alloc::rc for manipulating
uniquely-owned Rc values. is_unique() can be used to test if the Rc is
uniquely-owned, try_unwrap() can remove the value from a uniquely-owned
Rc, and try_get_mut() can return a &mut for a uniquely-owned Rc.

These are all free functions, because smart pointers should avoid having
methods when possible. They can't be static methods because UFCS will
remove that distinction. I think we should probably change downgrade()
and make_unique() into free functions as well, but that's out of scope.
cc @aturon, this has an interesting relationship with `make_unique` in that they have similar signatures, but very different implementations in that the `make_unique` implementation could be quite expensive while `try_get_mut` would be always cheap.

An interesting relationship, and one or the other may need renaming, but everything is marked as `#[experimental]` so it's not that pressing.