Make repeat op tree more consistent

Formerly, ck_repeat would sometimes make the right-hand argument of
list repetition accessible via cBINOPo->op_last and sometimes via
cLISTOPx(cBINOP->op_first)->op_last.

In the case of ($x)x1,

  repeat
    rv2sv
      gv
    const

would become

  repeat
    ex-list
      pushmark
      rv2sv
        gv
      const

while in the case of ($x,$y)x1,

  repeat
    list
      pushmark
      rv2sv
        gv
      rv2sv
        gv
    const

would just have the list changed to an ex-list.

Having the right-hand argument accessible from two different places
makes things more complicated elsewhere in op.c, so keep the second
kid where it was.

The old approach was to detach all kids, and then wrap them in a list
op if the first kid was not a list already.  Instead, just detach the
first kid.
Deparse list repetition assignment properly

This only applies to the almost useless case of nothing but a repetition
on the lhs of list assignment:  ((undef)x3) = foo();

Other cases where the repetition is part of a larger list already
deparsed correctly.

Checking whether the lhs begins with a parenthesis is not sufficient
to determine whether the lhs is parenthesized.  I believe repetition
is the only binary op other than the comma that is allowed on the
lhs, so we can just check for that in the op tree.
Optimise ($foo)x1 and ($foo)x0 in list cx

If the repeat count is 1, then we simply remove the repetition operator
and have the ops of the lhs evaluated, regardless of what they are.

If the repeat count is 0, then we only optimise if the lhs is a simple
scalar or constant.  We optimise the whole thing down to the empty
list.

This only happens currently for integer constants on the right-
hand side.

In the 0 case it could be extended to multiple scalars/constants, but
that would be more work.
toke.c: Report the proper type for assign ops

For combined assignment operators like *= and +=, the lexer passes an
ASSIGNOP token to the parser, but the -DT output said MULOP or ADDOP;
i.e., it was reporting the type *before* the check for a following
‘=’, instead of after it.