Raise better errors if server fails to start

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.

Fixes #644.
Is it worth extracting `parse_port` or something for this inner `if`/`else`? Thoughts on using `match` instead of `=~` and `$1`?