Add CouchError to wrap REST errors in Error object

Allows for proper handling of Error objects in callbacks (e.g. `throw err` and `next(err)`) and maintains all the existing properties of the original REST error for backwards compatibility.

```js
db.view('some/view', function (err, res) {
  // errors extend the Error object
  err instanceof Error; // true

  // errors are now throwable
  if (err) throw err;

  // errors can also be used with Express.js to pass request to error handler
  if (err) return next(err);

  // ...
});
```
See #216 and #213.