WebMP: Use host as requested by the user for generating absolute links

Use the Host header from the request in generated absolute links. When port
forwards and/or more complex reverse-proxying setups are in use, this header
can contain the original host as requested by the user, as opposed to the host
on which the current server is running (which .NET puts into Request.Url, for
some strange reason).

This is a partial and modified cherry pick of the following commits:
- 67e76ffef7c80eebfe065a191cbfa01e84539dfa
- 99089c806b314c40cd33e4c25e71ae9ff995ea82
- 46a84bc07000e30fe6e8ddf17c51dcabde68167a
WebMP: Don't use Direct streaming when requested host isn't local

The old code incorrectly used Request.Url.Host, which is rewritten by .NET
and doesn't include the information from the HTTP request.