@martin-g Thinking more about it you definitely have a point though with regard to confusion potential.
I think we should add something like this to the scaladoc of `withScheme`:

    The `scheme` change of the Uri has the following effect on the port value:
    If the Uri has a non-default port for the scheme before the change this port will remain unchanged.
    If the Uri has the default port for the scheme before the change it will have the default port for
    the *new* scheme after the change.