normalize errors and add .error(msg, ...) as BadRequest

this adds `.error(msg, ...)`, i removed the previous `.error(msg, ctx{ status, body})` because i think upstream should be intelligent enough to capture `res.text` etc..

for integrations that do multiple requests, we can always have the proto cache the current `req` instance somewhere and use it in `.error()` call itself.

```js
identfy = function(msg, fn){
  fn(self.error('something blew up %s', hint));
};
```

cc @gjohnson