I see what you mean about the class hierarchy... I think ideally `ErrorJob` would extend `FailJob` instead of `IntervalJob` - what do you think?

Maybe `IntervalJob` shouldn't be a class, but should instead be a method on `MockJob`. Then `ErrorJob` could look like:

```coffee
class ErrorJob extends FailJob
  constructor: (messages, timeout = 500) ->
    super
    @interval 'warning', messages, timeout # Emit messages as warning events over the span of timeout ms
```

And `DataJob` could look like:

```coffee
class DataJob extends CompleteJob
  constructor: (data, timeout = 500) ->
    super
    @interval 'data', data, timeout
```

This might also allow people to implement more complex mocks if they needed them in their test cases, such as combination of data + warning messages (though interval might need an offset or something to do that, so probably not something to worry about right now).