Scheme characters *must* be lower case, but implementations should tolerate and normalize upper case characters to lower case. The host component is case insensitive. The various Uri types should provide `PartialEq` / `Hash` implementations that handle the necessary case sensitivity logic.