The global dirty byte count can go negative if there is a race freeing updates during a checkpoint.  That's okay (or at least, not terrible), limit the damage.

Also reinstate Keith's change to generate an unconditional error message if the dirty page count goes negative.

refs #699