require the user to manually decode structs

This removes the `SetError()` junk and forces you to use `*Response.Decode()`.

```go
res := req.Get()
if res.IsError() {
  panic(res.Error())
} else if res.IsApiError() {
  apierr := &ApiError{}
  res.Decode(apierr)
  panic(apierr.Message)
} else {
  user := &User{}
  res.Decode(user)
  panic(user.Login)
}
```

/cc #3