Fix Node url.format() param type

url.format() doesn't need all of the properties of the Url type returned from url.parse(), and some properties are different types (like `query` can be an object) so this changes it to use a separate UrlOptions interface.

Updated test script to check this works and to check that you can still pass in an Url.