Added a new Canonicalize that takes a Uri, changed the base method to use UriBuilder to fix possible format exceptions when a supplied string lacks a protocol