[FIXED JENKINS-23294] Interpret X-Forwarded-Port

- Also fixed handling of X-Forwarded-Proto and added support for X-Forwarded-Host

- Additional complexity is that there can be multiple headers with the same name (which was handled by default by accident) and
  that a header value may contain a comma separated list if there were multiple forwarding hops.
[FIXED JENKINS-23294] Deal with X-Forwarded-Port.
If this is set, use it instead of ServletRequest.getServerPort() for purposes of getRootUrlFromRequest().
Also treat the default port as scheme-specific in that method (which presumes that we in fact got the reported port right).
And enhance the reverse proxy setup monitor to validate that the Referer header (/manage)
actually matches what we have computed from getRootUrlFromRequest;
if it does not, something is messed up, though it may require some digging to find what.
(Would be better to let the monitor specify the exact problem it determined,
though this is not always actually possible;
for example if you are missing AllowEncodedSlashes NoDecode in Apache,
you just get a 404 from Apache without even getting to Jenkins.)
[FIXED JENKINS-23294] Interpret X-Forwarded-Port

- Also fixed handling of X-Forwarded-Proto and added support for X-Forwarded-Host

- Additional complexity is that there can be multiple headers with the same name (which was handled by default by accident) and
  that a header value may contain a comma separated list if there were multiple forwarding hops.
Since the javadoc for the method says that the relative path should start without a leading '/' strip any leading '/' characters

- I had been tempted to throw IllegalArgumentException but that would break a lot of tests
Somebody did not read the javadoc for the goTo method (urls not supposed to start with a /)
Merge pull request #1294 from jenkinsci/pull/1265/head

[FIXED JENKINS-23294] Interpret X-Forwarded-Port