Protocols now *must* have a default port - after all, we're only handling Http and Https.
Url fragments are now properly serialized.
Absent ports in urls are now properly parsed, instead of becoming -1. Note that this fix is probably temporary: java.net.URL appears to be rather messed up when it comes to URL encoding & decoding, and we're probably going to have to move away from it.