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.
We truly don't care what the value here is. Docker almost does not know about it and Nginx just ignores it. What's really essential here is to have the 'connect: upgrade; upgrade: xxx' dialog to hint middle mans. If it had been important, I'd have put as "real" value (read known, standard) like "websocket".

This said, we **can** change it. It will only be aesthetic though.

Opinion ?