Update URL parsing implementation

Better supports `scheme:///path` and `scheme:///`.