A node that is loading weights looks identical to one that is computing:
progress_state carries only state/value/max, and load_models_gpu runs inside
the sampler, so the UI shows the sampler sitting at 0% while weights move.
Adds an optional activity field to the node progress state, reported through a
hook like the existing progress bar hook, and sets it to "loading" around the
VRAM load. The field is absent unless something sets it, so existing clients
are unaffected.