title: Changing the scheme of System.Uri
body: <p>I'm looking for canonical way of changing scheme of a given <a href="http://msdn.microsoft.com/en-us/library/system.uri.aspx">System.Uri</a> instance with <a href="http://msdn.microsoft.com/en-us/library/system.uribuilder.aspx">System.UriBuilder</a> without crappy string manipulations and magic constants. Say I have</p>
  
  <pre><code>var uri = new Uri("http://localhost/hello")
  </code></pre>
  
  <p>and I need to change it to '<strong>https</strong>'. My issue is in limited <code>UriBuilder</code> ctors and <code>Uri.Port</code> defaulting to 80 (should we change it to 443? hardcoding?). The code must respect all <code>Uri</code> properties such as possible basic auth credentials, query string, etc.</p>