Creates and returns a deep copy of the URI. This methods must ensure a
deep copy of the URI, so that when a URI is cloned the URI can be
modified without effecting the original URI. This provides useful
functionality for proxying Requests and Responses. This method overrides
the clone method in java.lang.Object.