[writeboost] Fix error handling

fixes:
- Reading from backing device after failure is now OK.
- Writeback after failure is ignored. Writing back data that
  failed on cache device shouldn't be written back.
- Mark dead if some plog writes failed.

refactors:
- Add mark_dead() macro for readability
- Rename IO() to maybe_IO() to clarify that it's "maybe"
- Purge some macros (LIVE, DEAD, LIVE_DEAD) because they are not clear.

Signed-off-by: Akira Hayakawa <ruby.wktk@gmail.com>