Improves handling of forwarded headers. Fix #2094

I think it's good that we're no longer calling `getHostAddress` in `rSecure`. When I profiled Play recently I saw that 5-10% of its time was spent in `getHostAddress`. We are currently calling `getHostAddress` twice on every request, once in `rRemoteAddress` and once in `rSecure`.

Even though `rRemoteAddress` and `rSecure` are meant to be lazy, they are in fact eagerly evaluated on every request by the router when it [tags the request](https://github.com/playframework/playframework/blob/bdda4b2520aa4a8a2068707c1915d0c258e37147/framework/src/play/src/main/scala/play/core/router/Router.scala#L218-L221).

I tried to make these fields lazy recently, but my couldn't measure any performance benefit so I didn't bother making a PR: https://github.com/richdougherty/playframework/commit/ecb56321ed773ac48f32c2fcae1ca6d1b24973c4