Fix emit return

Addresses #1.

In order to make sure the return value of the original `emit` function is preserved, I added some return statements into the `emitFactory` function. This also requires returning the value of the `next` or `done` function inside interceptors, so I added that to the `README.md`. Also added tests.

If you don't want to put returns in front of those calls to `done` in the `README.md` I can remove that commit from the branch, but I think it's probably a good idea. It is also possible to forge the return of `emit` rather than trying to propagate its value thru the callback chain; this is a little janky but would produce a bit of a cleaner interface. If you want I can write something like that, up to you.