libstd: Implement `StrBuf`, a new string buffer type like `Vec`, and port all code over to use it.

libstd: Implement `StrBuf`, a new string buffer type like `Vec`, and port all code over to use it.

Rebased & tests-fixed version of https://github.com/mozilla/rust/pull/13269