message: dronelink_impl: don't keep lock for too long
  If we kept the long during the process message, we were not able to send
  messages back and it would deadlock.
diff: @@ -57,8 +57,6 @@ void DroneLinkImpl::receive_message(const mavlink_message_t &message)
  create_device_if_not_existing(message.sysid, message.compid);
  remove_empty_devices();
  - {
  - std::lock_guard<std::mutex> lock(_devices_mutex);
  if (_should_exit) {
  // Don't try to call at() if devices have already been destroyed
  @@ -66,11 +64,18 @@ void DroneLinkImpl::receive_message(const mavlink_message_t &message)
  return;
  }
  + _devices_mutex.lock();
  +
  if (message.sysid != 1) {
  Debug() << "sysid: " << int(message.sysid);
  }
  - _device_impls.at(message.sysid)->process_mavlink_message(message);
  - }
  + auto &device_impl = _device_impls.at(message.sysid);
  +
  + // We need to release the lock, otherwise we can't send
  + // messages inside process_mavlink_message.
  + _devices_mutex.unlock();
  +
  + device_impl->process_mavlink_message(message);
  }
  bool DroneLinkImpl::send_message(const mavlink_message_t &message)
  