Allow setting of handshake attributes directly

In order to use the handshake server from a non-string based protocol
(e.g. Rack), it is convenient to be able to set the headers,
path, and query manually, and then call set_version manually.

This means that this library can be easily used with Rack 1.5's new
hijack feature, which gives a user access to the underlying socket.