Proxying is now more transparent

I've changed the proxying code so that it transparently sends data between the
client and the proxied server, instead of the previous behaviour of parsing
out each request / response between the two.

This should allow things like web sockets to now work.