Buffering scheme: we use a tremendously simple buffering
scheme that greatly reduces the number of calls into the
Writer/PrintWriter. In practice this has produced significant
measured performance gains (at least in JDK 1.3.1). We only
support adding single characters to the buffer, so anytime
multiple characters need to be written out, the entire buffer
gets flushed. In practice, this is good enough, and keeps
the core simple.