Issue title: \seq_shuffle:N disturbs an outer seq mapping
 Issue body: Hello,

Please consider this MWE:

```
\documentclass{article}
\usepackage{expl3}

\ExplSyntaxOn
\seq_new:N \l_test_seq
\seq_set_from_clist:Nn \l_test_seq { a, b, c }

\seq_map_inline:Nn \l_test_seq
  {
    \iow_term:n { XXX }
    \seq_shuffle:N \l_tmpa_seq
  }
\ExplSyntaxOff

\begin{document}
\end{document}
```

The XXX is only printed once, because `\__seq_shuffle:NN` uses `\cs_set_eq:NN \__seq_item:n \__seq_shuffle_item:n` inside a group instead of, .e.g., `\__seq_push_item_def:n { \__seq_shuffle_item:n {#1}` ... `\__seq_pop_item_def:`.

AFAIUI, what happens precisely is that the `\seq_gset_from_inline_x:Nnn` uses `\__seq_shuffle_item:n`, which does a global assignment to `\__seq_shuffle_item:n` before the `\endgroup` in 
 Comments: 
 Comment 0: One possible fix is:

```latex
\cs_new_protected:Npn \__seq_shuffle:NN #1#2
  {
    \int_compare:nNnTF { \seq_count:N #2 } > \c_max_register_int
      {
        \__kernel_msg_error:nnx { kernel } { shuffle-too-large }
          { \token_to_str:N #2 }
      }
      {
        \group_begin:
          \int_zero:N \l__seq_internal_a_int
          \__seq_push_item_def:n { \__seq_shuffle_item:n {##1} }
          #2
          \__seq_pop_item_def:
          \seq_gset_from_inline_x:Nnn \g__seq_internal_seq
            { \int_step_function:nN { \l__seq_internal_a_int } }
            { \tex_the:D \tex_toks:D ##1 }
        \group_end:
        #1 #2 \g__seq_internal_seq
        \seq_gclear:N \g__seq_internal_seq
      }
  }
```

By inlining the `\__seq_shuffle_item:n {##1}` call added in `\__seq_push_item_def:n`, one can save one macro expansion per item in the sequence. The fix can be tested by simply replacing `\cs_new_protected:Npn` with `\cs_set_protected:Npn`.

I can file a merge request if you say whether you prefer this fix or the inlined variant (but maybe you'll want to do something else).
 Comment 1: In case you received the previous “comments” by email, please just read https://github.com/latex3/latex3/issues/687 instead: as I accidentally sent the bug too early (I have a... special keyboard), it wasn't ready yet and I had to make a few edits before being satisfied. Sorry!
 Comment 2: I'm not sure what could be the expected result of mapping a sequence that's being shuffled during the mapping itself.
 Comment 3: The shuffled sequence is *not* the mapped sequence.
 Comment 4: Thanks for the detailed bug report!  I'm running the test suite right now, with a variant of what you wrote:

              \@@_push_item_def:
              \cs_gset_eq:NN \@@_item:n \@@_shuffle_item:n
              #2
              \@@_pop_item_def:

instead of using directly `\@@_push_item_def:n` and having to decide whether to expand or not.
 Comment 5: Even if it were the same sequence, all of our current mappings simply
expand the given list before running through it, so shuffling the seq
variable will have no effect on the mapping.  AFAIK this is undocumented.

 Comment 6: Thanks @blefloch, that is indeed a neat idea!
{'source': 'GithubIssues', 'repo_name_with_owner': 'latex3/latex3', 'issue_id': 581118092, 'repo_stars': 1566.0}