Merged requested to merge jadahl/mutter:wip/fix-transactions-tear-down into main
The GQueue node for transactions are inlined in the transaction struct, meaning we should never let the GQueue API free the node itself, as that actuall frees the transaction itself.
We did this during tear down if there were left-over transactions, meaning we ended up with use-after-free issues after having popped transactions from the queue.
Fix this by just popping the link itself, which won't attempt to free it. It is effectively freed when freeing the transaction itself so we won't leak any memory.