Show impl for Weak

Show impl for Weak and tweaked the Show impl for Rc for consistency
@forticulous The current implementation only tests that it's alive before it does any work. But it then goes on to call a method on the value (`value.fmt(f)`), and that method is capable of dropping the last outstanding strong reference to the value (which is precisely what my code does). When that happens, the value will immediately be dropped, even though it's in the middle of executing a method that has a valid `&self` pointer. This breaks the guarantee that `&`-references always refer to valid values.