The Connection class is fairly large and combines the responsibilities
of booting the server and connecting to it.
This extracts a class to encapsulate booting a server. It also provides
a hook for injecting your own server.
This spec was randomly failing because it would sometimes take longer
than the fixed, 1-second sleep we had in place. This changes it to wait
up to 3 seconds, without sleeping longer than it needs to.
* When WEBKIT_SERVER_START_TIMEOUT was reached, @port would get set to
nil. If execution of the SERVER_PROCESS returned immediately, @port
would get set to 0. This lead to odd cross-platform behavior in
#connect, which would try to connect to a nonsense port.
Forwarding stderr via 2>&1 causes an additional child process to be
spawned. Killing that process does not kill webkit_server.
JavaScipt console messages and alerts are now written to the logger
instead of directly to stdout.