refactor with http-errors

cc @eivindfjeldstad @jonathanong 
```js
for (var key in props) err[key] = props[key];
err.status = err.statusCode = status;
err.expose = err.status < 500;
```

vs

```js
err.status = err.statusCode = status;
err.expose = err.status < 500;
for (var key in props) err[key] = props[key];
```