GitUrl represents an input url href that is a url used by git
Internally during parsing the url is sanitized and uses the url crate to perform
the majority of the parsing effort, and with some extra handling to expose
metadata used my many git hosting services
normalize_url takes in url as &str and takes an opinionated approach to identify
ssh:// or file:// urls that require more information to be added so that
they can be parsed more effectively by url::Url::parse()