preserve mocha test context in both setup and assertion blocks

Standard Mocha uses the same context for both its `beforeEach` blocks and its
`it` block. Among other things, this enables setting up things like
spies in setup, and then making assertions. E.g.

```js
   beforeEach(function() {
     this.spy = sinon.spy();
     callACallback({callback: this.spy});
   })

   it('calls the callback', function() {
     expect(this.spy).to.have.been.called
   })
```
Instead of swapping out the context of the `it` block, just mixin the
context of the test module into the existing mocha context. That way,
you can have the best of both worlds.