Consistent exit reasons (and stacktraces)

Ensure that the correct (and relevant) mfa is used when a function exits due to an error in another process, and ensure the exit is called in the same function as the mfa in the exit reason.

Changes:
* `GenEvent` stream uses local functions so that a more detailed and relevant mfa is used in the exit reason on error.
* `Task.find/2` will exit with `Task.find/2` mfa
* `Task.find/2` calls `exit/1` inside itself, rather than an `Enum.find_value` fun, so that the stacktrace has `Task.find/2` at its head.

Fixes #20