Fix hs_try_putmvar losing track of running cap
This change allows hs_try_putmvar to be called from an unsafe foreign call by removing the assumption that there is no running capability on the current running task.
This fixes #15427 (closed). The test case is adapted from the repro for this task to try and exercises some more codepaths in the hs_try_putmvar method