Overhaul ApiError

The previous type was more appropriate to an HTTP API than a client
library. This one makes a bit more sense.