Provide more descriptive errors when a proxied request fails

cc @ross- 
Since event emitters are usually called in asynchronous fashion, we probably lose the stack trace by generating a new error. What are your thoughts on adding a new `uri` property to the error itself?

```js
err.url = remoteUrl;
cb(err);
```