message: core: fix bug in command timeout
  We don't need to update the iterator becausse we return anyway after
  having deleted one work item. However, and very importantly, we have to
  really return by breaking out of the loop. Otherwise, we increment the
  iterator twice and land out nowhere.
diff: @@ -191,21 +191,21 @@ void MavlinkCommandSender::receive_command_ack(mavlink_message_t message)
  case MAV_RESULT_ACCEPTED:
  _parent.unregister_timeout_handler(work->timeout_cookie);
  temp_result = {Result::Success, 1.0f};
  - it = _work_queue.erase(it);
  + _work_queue.erase(it);
  break;
  case MAV_RESULT_DENIED:
  LogWarn() << "command denied (" << work->identification.command << ").";
  _parent.unregister_timeout_handler(work->timeout_cookie);
  temp_result = {Result::CommandDenied, NAN};
  - it = _work_queue.erase(it);
  + _work_queue.erase(it);
  break;
  case MAV_RESULT_UNSUPPORTED:
  LogWarn() << "command unsupported (" << work->identification.command << ").";
  _parent.unregister_timeout_handler(work->timeout_cookie);
  temp_result = {Result::Unsupported, NAN};
  - it = _work_queue.erase(it);
  + _work_queue.erase(it);
  break;
  case MAV_RESULT_TEMPORARILY_REJECTED:
  @@ -213,13 +213,13 @@ void MavlinkCommandSender::receive_command_ack(mavlink_message_t message)
  << ").";
  _parent.unregister_timeout_handler(work->timeout_cookie);
  temp_result = {Result::CommandDenied, NAN};
  - it = _work_queue.erase(it);
  + _work_queue.erase(it);
  break;
  case MAV_RESULT_FAILED:
  _parent.unregister_timeout_handler(work->timeout_cookie);
  temp_result = {Result::CommandDenied, NAN};
  - it = _work_queue.erase(it);
  + _work_queue.erase(it);
  break;
  case MAV_RESULT_IN_PROGRESS:
  @@ -312,7 +312,8 @@ void MavlinkCommandSender::receive_timeout(const CommandIdentification& identifi
  temp_callback = work->callback;
  temp_result = {Result::ConnectionError, NAN};
  - it = _work_queue.erase(it);
  + _work_queue.erase(it);
  + break;
  }
  }
  