createFrom and inheritFrom

Implement utility methods for creating an object from a prototype object and
inheriting a subclass from a superclass. Both accept an optional properties
object as their last argument.
Use inheritFrom method instead of __proto__

Replace instances of the following:
```javascript
function Subclass() {
}
Subclass.prototype = {
  // prototype properties...
};
Subclass.prototype.__proto__ = Superclass.prototype;
```

With:
```
function Subclass() {
}
inheritFrom(Superclass, Subclass, {
  // prototype properties...
});
```
Use createFrom instead of setting __proto__

We can't use `inheritFrom` when creating a window in `browser/index`, because
the window is created from an optional `dom` instance.

In `level3/ls`, `LSProgressEvent` and `LSLoadEvent` inherit their prototypes
from `events.Event` instead of `events.Event.prototype`, so we have to use
`createFrom`.
Use Object.create sted __proto__ in level3/xpath

This module attempts to be dependency-free, so use `Object.create` directly
instead of `utils.createFrom`.

This commit also simplifies `XPathException` by removing a couple instances of
ineffective `__proto__` tomfoolery. Specifically, the constructor sets
`__proto__` on `this`, which is equivalent to just returning whatever
`__proto__` was set to. There's also no reason to call `Object.create` with one
`[[Prototype]]` immediately before setting `__proto__`.
Inherit level2 Node from EventTarget

Instead of assigning to `Node.prototype.__proto__`, use `inheritFrom`. However,
we then have to reinherit all subclasses of `Node`.