Mocking a Koa Context
I didn't find any pre-existing issues, so I figured I'd open this for discussion.  I'm looking for an easier way to mock a `Context` object in order to unit test routes/middleware in isolation without having to spin up and teardown an http server to do so.

Consider this trivial example:

**authenticate.ts**

```ts
import { Context } from 'koa';

export default function() {
  return async function(ctx: Context) {
    ctx.assert(ctx.headers.completelySecure === 'OPEN THE DOOR', 401, 'Unauthenticated.  What\'s the secret word?');
  };
}
```

**authenticate.spec.ts**

```ts
import authenticate from './authenticate';

describe('Authenticate', function() {
  it('totally works', async function(done) {
    const authenticator = authenticate();
   
    // Sadness, this does not implement `context` and there is no easy way
    // to do so
    const mockContext = {
      headers: {
        completelySecure: 'OPEN THE DOOR'
      }
    };

    try {
      await authenticator(mockContext);
      done();
    } catch(err) {
      done.fail();
    }
  });
});
```

What I'm proposing is to support creation of mock contexts either in the core library, or another closely held project since it's highly likely that something like this would need to depend on internals of the library.