guri: Normalize uri segments if they are encoded and add a flag to do scheme-based normalization
This changes it so when a segment is encoded it will be normalized at parse time which ensures its valid and it can more easily be compared with other uris.
Previously it was very possible to have invalid, in terms of the URI RFC, characters in an encoded segment. So I view this as simply fixing an error.
Always encoding illegal characters also matches libsoup's SoupURI behavior.
This was briefly discussed in #2222 (closed) but didn't get many comments so I thought I'd just open an MR.
Edited by Patrick Griffis