Improves handling of forwarded headers. Fix #2094

I'd prefer it if `ForwardedHeaderHandler` was a local variable within `PlayDefaultUpstreamHandler.messageReceived`, rather than a mix-in. It's much easier to understand the scope of of local variable.

E.g.
```scala
val forwardedHeaderParser = {
  val appConfig = server.applicationProvider.get.toOption.map(_.configuration)
  val config = ForwardedHeaderHandlerConfig(appConfig)
  new ForwardedHeaderParser(config) // I renamed it to *Parser
}
```