Make request.host prefer HTTP_X_FORWARDED_HOST if present

The X-Forwarded-Host request header is often set by proxies. It is
useful because it tells the app the host that the client requested from
the proxy server, which might be different from the "Host:" header that
was received by the origin server, like if the proxy proxies to a
virtual host on the origin server.