This commit adds the early hints lambda to the headers hash. Users can
call it to emit the early hints headers. For example:
```
class Server
def call env
if env["REQUEST_PATH"] == "/"
env['rack.early_hints'].call("Link" => "</style.css>; rel=preload; as=style\n</script.js>; rel=preload")
[200, { "X-Hello" => "World" }, ["Hello world!"]]
else
[200, { "X-Hello" => "World" }, ["NEAT!"]]
end
end
end
run Server.new
```
In this example, the server sends stylesheet and javascript early hints
if the proxy supports it, it will send H2 pushes to the client.
Of course not every proxy server supports early hints, so to enable the
early hints feature with puma you have to pass the configuration variable,
`--early-hints`.
If `ENV['rack.early_hints']` is not set then early hints is not
supported by the webserver. Early hints is off by default.
When puma is daemonized (or maybe always?) it swallows exceptions that happen during startup. This patch makes the log message slightly more useful.
Should we log the entire stacktrace too? Clutter vs. info...