Better BufferedProcess error handling

We've had a lot of errors related to not having some binary installed. The errors are terrible: https://github.com/atom/atom/issues/4525

These packages are trying to [handle them](https://github.com/nickclaw/atom-grunt-runner/blob/master/lib/grunt-runner-view.coffee#L152), but there is no way without using `bufferedProcess.process.on 'error'` and that is obviously not discoverable. 

Notifications will catch the unhandled errors, and display something nice for them, rather than the fatal notification with a 'create issue' button.

* If there is a handler, just emit the event
* If no handler, throw an error
What about just setting some local state when a handler is registered. You'll have to wrap the disposable but I think it would be better than depending on implementation details of `Emitter`?