Remove mut ~str, use std::strbuf::StrBuf

Per mozilla/rust@d8e45ea7c054b4ad6fb82ec3a9fcf1736b4d7260 this ports all
uses of ~str as temporary vectors to use StrBuf instead.

There are places where I'm doing lots of really fiddly type juggling
inside functions that could absolutely be ported to just use StrBuf as
the interface, but this would break compatibility outside of them
(insofar as it does already- this library totally explodes on a post
d8e45ea7c rust)