Accept Location object or anchor element representing a filesystem URL as an argument to new URI().

This changeset enables the following when running from the local filesystem (previously it only worked when running from a network resource):
```javascript
URI(window.location);
```

Equivalently, it enables the following:
```javascript
var a = document.createElement("a");
a.href = "file:///C:/foo/bar.html";
URI(a);
```

As a side-effect, this changeset fixes the unit tests when running from the local filesystem.

Prior to this change, when running from the local filesystem, tests would fail as follows:
* `constructing: new URI(object)`: `TypeError: invalid input at URI.p.href (URI.js:847:15)`
* `constructing: new URI()`: fail: `hostname == location.hostname`

I’ve also added some new tests to verify the new features.