Make the set of "soft" row errors selectable individually

Instead of having one boolean controlling them all.

This allows us to have idempotent deletes.

It will also bail earlier when a fatal error DOES happen, because now
we check the error state at each row instead of at the end.  The actual
flag is set in another thread so it won't happen ULTRAPROMPTLY but
meh good enough.