Instead of having overloads that return std::string& and const std::string&, instead have one function that returns llvm::StringRef. People should not be modifying the internal contents of a stream's buffer, as that goes against the concept of a stream, which is supposed to provide forward-only access. This makes it easier in the future to port StreamString over to llvm::raw_ostream.
I don't need a detailed review of the code, I mostly just need to make sure it compiles on OSX. I made sure it compiles on Linux and Windows, but I can't easily test OSX.