MarshallingDirectives, FormFieldDirectives, and more

It may not readily show but this PR has been keeping me busy for far too long.
Due to numerous interdependencies it addresses 3 tickets at the same time: #15927, #15923 and #16190.

I'm glad to finally get this beast of my table! :)
I see. `retryWithPatchedContentType` still feels a bit hacky. But as `Unmarshaller` is such a slim interface (`A ⇒ Future[B]`) I guess `UnsupportedContentTypeException` is the only mechanism available for unmarshaller negotiation.