message: gimbal: only set protocol once
  This should avoid resetting the protocol each time we get a
  gimbal_manager_information message which happens for some systems.
diff: @@ -57,6 +57,7 @@ void GimbalImpl::receive_protocol_timeout()
  // assume Version2 is not available.
  LogDebug() << "Falling back to Gimbal Version 1";
  _gimbal_protocol.reset(new GimbalProtocolV1(*_parent));
  + _protocol_cookie = nullptr;
  }
  void GimbalImpl::process_gimbal_manager_information(const mavlink_message_t& message)
  @@ -64,13 +65,16 @@ void GimbalImpl::process_gimbal_manager_information(const mavlink_message_t& mes
  mavlink_gimbal_manager_information_t gimbal_manager_information;
  mavlink_msg_gimbal_manager_information_decode(&message, &gimbal_manager_information);
  + if (_protocol_cookie != nullptr) {
  LogDebug() << "Using Gimbal Version 2 as gimbal manager information for gimbal device "
  << static_cast<int>(gimbal_manager_information.gimbal_device_id)
  << " was discovered";
  _parent->unregister_timeout_handler(_protocol_cookie);
  - _gimbal_protocol.reset(
  - new GimbalProtocolV2(*_parent, gimbal_manager_information, message.sysid, message.compid));
  + _protocol_cookie = nullptr;
  + _gimbal_protocol.reset(new GimbalProtocolV2(
  + *_parent, gimbal_manager_information, message.sysid, message.compid));
  + }
  }
  Gimbal::Result GimbalImpl::set_pitch_and_yaw(float pitch_deg, float yaw_deg)
  