Set HTTP upgrade headers when hijacking connection

When setting up a reverse proxy like Nginx behind Docker client and Docker remote API most commands works fine except `docker attach` and `docker exec`. When these commands are used, docker "hijacks" the HTTP connection back to raw bi-directional TCP. As the reverse proxy was expecting plain HTTP it is completely lost.

This Pull Request adds `Connection: Upgrade` and `Upgrade: tcp` HTTP headers as well as return code of `101 UPGRADED` in this scenario. It is fully backward compatible and, while 'tcp' upgrade is not standard, it is enough to trigger Nginx connection upgrade path as used by websockets.
I don't know how we should deal with an empty, yet provided `"Upgrade"` header field. I think a more idiomatic way of checking, which doesn't involve testing the field's value length would be:

     if _, ok := r.Header.Get("Upgrade"); ok {

I'll let you check [the spec](https://golang.org/ref/spec#Index_expressions) if syntax isn't clear (also, parenthesis around conditions are not required in Go).