improve clarity and correctness
- introduce blocked_by_alarm state predicate which makes it easier /
  more obvious to detect the transitions to/from
- do not send 'unblocked' when the client doesn't have the capability
- ditch superfluous true/false return from maybe_send_unblocked (now
  send_unblocked)
- detect the transition into blocked_by_alarm that can result from
  handling conserve_resources (the original purpose of the bug)