sourcemap support

example output:

will output the 5 lines before and after the error location. and update stack traces with correct locations
```
ReferenceError: a is not defined
    at fail [as _onTimeout] (/Users/michaelhayes/work/jsdom-eval/test.js:6:0)
    at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)


setTimeout(fail, 1000)

function fail() {
  console.log(a)
^
}
```
yay weird jsdom handling of errors.  it catches all the error before the load event and passes them as an array of objects that look like errors but aren't but have a data property with a message and the real error object because why not