Normalize apiserver error handling of standard errors

Prepare for #656 to return consistent API errors like
AlreadyExists, UpdateConflict, NotFound, etc.

This builds on #728 - only the last two commits are new.
I feel like this will evolve into a complicated mess, and arguably I started it with the poorly defined "Details" field. I'd argue for making a system where there are two fields. One is a machine readable string enum (of which "other" is one of the choices) and the other is something like the current details field. I think whatever system you use, you should replace the Details field. It's only used for one thing right now, so now is the time to fix it.

```
{
  "status": "Working",
  "detailType": "OperationNumber",
  "detail": "42",
}
```