!hco #15635 reorganize registration of predefined, custom HTTP primitives + other small improvements

Fixes #15635.

@richdougherty can you check if that would work for you?
If you made `_nioCharset` a `Try[Charset]` instead of an `Option[Charset]` then you could just call `get` on it to either get the value or throw an exception. You'd just need to remote the `toOption` from the `findNioCharset` method.