message: integration_tests: try to make test less flaky
  This hopefully should get rid of some timing races.
diff: +#include <atomic>
  #include <iostream>
  #include "mavsdk.h"
  #include "plugins/action/action.h"
  using namespace mavsdk;
  void observe_mode(Telemetry::FlightMode flight_mode);
  -static Telemetry::FlightMode _flight_mode = Telemetry::FlightMode::Unknown;
  +static std::atomic<Telemetry::FlightMode> _flight_mode{Telemetry::FlightMode::Unknown};
  TEST_F(SitlTest, TelemetryFlightModes)
  {
  @@ -29,14 +30,23 @@ TEST_F(SitlTest, TelemetryFlightModes)
  std::this_thread::sleep_for(std::chrono::seconds(1));
  }
  - action->arm();
  - std::this_thread::sleep_for(std::chrono::seconds(2));
  - action->takeoff();
  - std::this_thread::sleep_for(std::chrono::seconds(2));
  - ASSERT_EQ(_flight_mode, Telemetry::FlightMode::Takeoff);
  - action->land();
  - std::this_thread::sleep_for(std::chrono::seconds(2));
  - ASSERT_EQ(_flight_mode, Telemetry::FlightMode::Land);
  + EXPECT_EQ(action->arm(), Action::Result::Success);
  +
  + EXPECT_EQ(action->takeoff(), Action::Result::Success);
  +
  + EXPECT_TRUE(poll_condition_with_timeout(
  + []() { return _flight_mode == Telemetry::FlightMode::Takeoff; }, std::chrono::seconds(10)));
  +
  + EXPECT_TRUE(poll_condition_with_timeout(
  + []() { return _flight_mode == Telemetry::FlightMode::Hold; }, std::chrono::seconds(10)));
  +
  + EXPECT_EQ(action->land(), Action::Result::Success);
  +
  + EXPECT_TRUE(poll_condition_with_timeout(
  + []() { return _flight_mode == Telemetry::FlightMode::Land; }, std::chrono::seconds(10)));
  +
  + EXPECT_TRUE(poll_condition_with_timeout(
  + [&telemetry]() { return !telemetry->armed(); }, std::chrono::seconds(10)));
  }
  void observe_mode(Telemetry::FlightMode flight_mode)
  