Make list assignment respect foreach aliasing

See ff2a62e0c8 for the explanation.  The bug fix in that commit did
not apply to foreach’s aliasing.

In short, ($a,$b)=($c,$d) needs to account for whether two of those
variable names could be referring to the same variable.

This commit causes the test suite to exercise a code path in scope.c
added by ff2a62e0c8, which turned out to be buggy.  (I forgot to test
it at the time.)
Update comments for OPf_SPECIAL/do

‘do subname’ has been removed, so OPf_SPECIAL no longer applies to
OP_ENTERSUB.
Deparse \(..., (@a), ...) correctly

It is the presence of parentheses immediately around the array (and
possibly local/our/my/+) in refgen context, rather than parentheses
surrounding the argument to \, that causes the array to be flattened.

B::Deparse was deparsing \(@a) correctly, but not \(@a, (@b)), in
which takes a reference to @a and to each of @b’s elements.  It was
omitting the parentheses around @b.
Keep concise-xs.t happy
Deparse ‘local our’

Deparse was omitting the ‘our’.