Allow non-standard http status codes to be used
Koa throws when a status code not defined in the `statuses` package is used in response:

https://github.com/koajs/koa/blob/78832ff6c63fdd93ad9a49f31ba2edd8cbe8adee/lib/response.js#L84

However, the HTTP RFC does not prevent custom status codes to be used:
http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-25.html#rfc.section.6.p.2

I can understand why status code validation might be useful for people just starting with http protocols, but for people who actually need to use custom codes, this is very limiting.

### Proposal

There are several options that the Koa team could choose to remediate the problem:

- Do not throw an error and just emit a warning
- Keep throwing but add a configuration flag to disable the check (ie. `koa.validateStatus = false`)
- Allow adding custom http status codes to Koa so that it accepts them (ie. `koa.AddStatus(440, 'Invalid Chicken')`)

I personally like the second and third approach. Currently the third approach is possible, albeit in a hacky way:

```js
import statuses from 'statuses'

// Add a hypothetical "invalid chicken" response code
statuses[440] = 'Invalid chicken'
statuses.codes.push(440)
statuses['Invalid chicken'] = 440
```