Implement Show for `Arc<T>`

Fixes https://github.com/rust-lang/rust/issues/18299
I have a feeling this is infinite recursion, it probably needs to be `(**self).fmt(f)`. Could you add a test too?