akka-http-core: remaining functionality for M1

This PR contains all the remaining bits for M1 apart from the Java API (#15398) and the docs (#15397).
Once reviewed and merged we should finally be good for M1.

We have slightly reduced the scope of the client API for M1, right now only the lowest API-level is implemented (i.e. individual HTTP connections). We'd suggest to implement client-side connection pooling, redirection following and the like after M1 is released and the low-level bits have stabilized more.

/cc @jrudolph
I think that a `@tailrec` with a default argument for the thing to work through feels scary. The compiler won't help you if you forget it and you will go into an infinite loop. Please split it up into something with the default args and the tailrec part.