Enhanced exceptions

This commit also contains:
- eslint + jscs break the process as they should if there is an error
- test should fail if no error is thrown on each t.throws tests
- throwing the same error keep the original stack trace

The helper I'm using only enhance exceptions that can be thrown & do not throw a new exception.

Note: I'm making a PR because I don't have npm rights for now :)
What kind of things `t.fail()` improves here?

> test should fail if no error is thrown on each t.throws tests

By default `t.throws` fails if no error is thrown.

```js
// It fails
t.throws(function noop() {});
```