inherit using prototype injection, avoid classes

```js
// this is good:
> Object.prototype.toString.call(require('http-errors')('x'))
'[object Error]'

// this is bad:
> Object.prototype.toString.call(new (require('http-errors')[404])('x'))
'[object Object]'

// this is *very* bad :)
> Object.prototype.toString.call(require('http-errors')[404]('x'))
'[object Undefined]'
```

ref: https://github.com/jshttp/jshttp.github.io/issues/35#issuecomment-54106646