Use external stack and allow custom fields for body

In this commit two things have been added to the package,
none of them is changing the API, so it is completely
compatible for existing users.

Two functions have been added

* `ErrorWithStack`
* `RequestErrorWithStack`

Those functions are working as `Error`, `RequestError` etc.
except that we can give them a custom stack.

Use case:

https://github.com/Soulou/errgo-rollbar

Basically with a web service which has a error management middleware.
If an error is returned to the middleware, I don't care to have the
stack of the middleware, what I'm interested in is the origin of the
error. Combined with errgo, it does exactly that.

The client does not manage all the possibilities provided by the rollbar
API. That's why I've added as optional variadic argument "fields" to the
`Error`-ish functions, as result it is possible to use the `custom` or
the `person` attributes of the rollbar body

Example:

```go
rollbar.Error(rollbar.ERR, err, &rollbar.Field{
  Name: "person",
  Data: map[string]string{
    "id": user.ID,
    "username": user.Username,
    "email": user.Email,
  },
})
```

As a consequence, the 'request' object is now using this
mecanism instead of having its custom code. (The `RequestError`
functions have been kept of course)

I hope these feature are OK for you, otherwise, what can I change, thanks !