Fix heap-use-after-free in query progress updates (#20431)
The issue occurred when web_client was freed while plugin threads were still trying to access it through progress callbacks. The progress callback stored a pointer to web_client, which became invalid after the connection was closed. Solution: Modified the progress callback signature to include the transaction UUID as a parameter, eliminating the need to store web_client pointers. Changes: - Updated rrd_function_progress_cb_t typedef to include nd_uuid_t *transaction - Modified all progress callback implementations to use the transaction parameter - Updated all callback invocations to pass the transaction from inflight structures - Removed web_client pointer dependencies by passing NULL as callback data This ensures that progress updates only use data that remains valid for the lifetime of the function execution.