Implement MutableSeq for String

This moves the `push_char` and `pop_char` methods from `String` into a
`MutableSeq<char>` implementation. This increases parallels between `String`
and `Vec`, and improves reuse of traits in libcollections. Because `String`
enforces that its contents are valid UTF-8, `String` behaves as a collection of
valid Unicode code points, and a `MutableSeq<char>` implementation makes sense.

* deprecates `push_char` in favor of `push`
* deprecates `pop_char` in favor of `pop`

For most users, changing calls from `push_char` and `pop_char` to `push` and
`pop` will preserve the desired behavior, since `MutableSeq` is imported in
`std::prelude`. When libstd is unavailable, `MutableSeq` will still be
available for import, since both `String` and `MutableSeq` are part of the
libcollections crate.

[breaking-change]