Preserve hook naming

Mocha's `before`/`after`/`beforeEach`/`afterEach` hooks support an optional first parameter that names the hook. It is important for differentiating between hooks of the same type when an an exception is caught in one of them. This will also optionally takes the name of the function for the hook (like Mocha does):

```js
beforeEach(function someUnambiguousName() {
  // ...
});
```