Reduced type checking to a minimum
Performance improvements

Note: This commit is a breaking change!

- Refactored functions out of `emit` and reduced the call stack depth
- `this.stopped` is now a boolean instead of a function returning a
  boolean
- `this.options.allResults` is now a boolean instead of a function
  returning a boolean
- `this.args` is now an array instead of a function returning a copy of
  the emit arguments
Caching