Throw an error rather than a string when no request inercepted

When we respond to a request that has not been made, we expect an error to be thrown and our test to fail. This happens when we respond synchronously, however when we respond within a `then` or `andThen`, the throw statement gets swallowed and the test terminates and looks like it has passed.

E.g
```js
visit('/')
.httpRespond("get", "/will-not-be-called", { stuff: 'asd' })
// the above line will trigger the throw statement

andThen(function() {
  // this will not be called
});
```

With the attached commit, throwing the error rather than just a string will cause an exception to bubble up to the test runner and therefore fail the test.