zb,zn,zp,zv: Mark error types non-exhaustive
We quite often need to add new error variants and strictly speaking that's an API break. Marking the error nums as non-exhaustive changes that and we can add new variants w/o breaking the API at all.
The cool thing is that this attribute doesn't affect the containing crate so we'll still get an error if our own match statements don't handle all cases.
For details: https://doc.rust-lang.org/reference/attributes/type_system.html#the-non_exhaustive-attribute