Right now, the various validation methods might actually normalize the components on input, too.
Should the various component methods, e.g., getName(), getVersion(), etc., return the valid but not normalized component?
It seemed to be intended that normalization only occur before returning a string (toString())?
Add a separate public PackageURL::normalize (PackageURL::canonicalize returns a String)?