Provides a case-class-like copy method for URI.
Note that this method simply passes the individual components of this URI to the URI constructor
that accepts each component individually. It is thus limited by the implementation restrictions of the relevant methods.