Be sure withSbt throws if it never connects

If we failed to connect, we were just never running
the tests and then "succeeding."

Also lengthen the timeout a little and print the
not-really-an-error error on the close event to
stdout instead of stderr.
Print more diagnostics if we never connect to server

Always print the connection error (but to stdout not err
since it isn't always a problem).

Try to dump the log file, and print its location.
This doesn't really work because most failures lead to
server restart which nukes the log files, but maybe we
can fix that separately.
add toString to Runnable for use in our integration test output
Synchronize the file logger

All other loggers are threadsafe so we're going to
confuse people touching this code if we aren't.
Don't feel like auditing the code we already have...
When sending JSON messages, use provided serial

This was completely breaking sbt server, but the
integration tests didn't fail because they
do not fail if we never connect to the server
at all. Fix for that in a separate commit.
Fix CanKillServer integration test for withSbt changes

Because the connect count thing was changed to be number
of connects instead of number of connects OR errors,
the CanKillServer test was broken; reworked to test
in a different way.

Also, print expected stuff to stdout not stderr and
fix to have a start-small-and-increase timeout
instead of a start-large-and-decrease timeout.
Fix obsolete doc comment for withSbt test routine
Merge pull request #154 from sbt/wip/havocp-fix-json-messages

Fix sending JSON messages