Make sure path leading slashes aren't added for empty hosts

`Url::buildUrl` accepts an array of parts. When it sets the path, it looks to see whether the hostname has been specified, and if it has - it prepends a `/` to the path. However, it's implementing this check with `isset` - so it's just seeing whether the array key exists, not the value. So it unnecessarily prepends a slash if an array contains a `host` key but no value.

This is affecting a bunch of upstream methods, since `buildUrl` is used by `__toString`.