Add server-side support for `Expect: 100-continue`, other improvements

This PR improves a number of things in akka-http-core and adds server-side support for `Expect: 100-continue` (#15799).

The client-side support depends on #16336 and is therefore postponed for the time being.
> This means that as a user you cannot be sure that all is well with the entity only because you already have the request instance in your hands. So, if you feed it directly into a file you are accepting the risk that there might be errors happening underway. I don't see a way around that. The benefit is that you'll know that something is wrong as soon as possible, not at some later point in the future.

The “you” in this last sentence is contentious: what the bypass does cannot have a positive effect on how the application code is informed of this incoming data stream error.

The problem I see is that the HTTP layer’s decision to abort things eagerly will make it more difficult for the application layer to deal with corrupt input in a meaningful fashion: there will be interference by way of stream cancellation.

What I (as a network programmer) would expect is that the connection is half-closed upon encountering a parse error and then the application’s response determines what shall happen: if it is an error response then pass that along before fully closing the connection, otherwise by default turn into 400, log a warning and close the connection (with the option of switching off this munging in the configuration—unless the HTTP spec explicitly forbids a 200 response in this case).