Prefer StringBuilder to StringBuffer

There is a minor theoretical performance benefit to using the
unsynchronized version. The JVM may be smart enough to perform escape-
analysis and remove the synchronization, but it's always good to help
it as much as possible.