Cleanup ParseHost

Current implementation is comingling things that ought not be together.
There are _some_ similarities between parsing for the different proto
types, but they are more different than alike, making the code extremely
difficult to reason about.
Or use the sprintf but don't have "unix" as an arg, it should be in the format.