Add "List" term type

In a nutshell, this is a low-on-semantics structure for grouping things.
An array assignment has two lists: Of lvalues and rvalues. A list slice
does, too: Of values and indices. Instead of creating an Op type that has
two or more lists of kid-ops, this is just a container to hold more children.

It is not clear that this is the best idea since sliced bread, but it should
be easy enough to back out of.
Cosmetics
Refactor pj_build_ast a little: Build children in separate function
Move kid AST list generation into OP type switch
AST: Implement lslice op!

$ perl author_tools/jit_ast_dump.pl -c -e '($x, $a) = (5,9,1,3,2)[1,3,2,1]'
----------------------------------------------
 Binop 'list slice' (
   List(
     C = (IV)1
     C = (IV)3
     C = (IV)2
     C = (IV)1
   )
   List(
     C = (IV)5
     C = (IV)9
     C = (IV)1
     C = (IV)3
     C = (IV)2
   )
 )
----------------------------------------------
B::Concise::compile(CODE(0x1562ee0))
j  <1> leavesub[1 ref] K/REFC,1 ->(end)
-     <@> lineseq KP ->j
1        <;> nextstate(main 2 (eval 12):1) v:%,{,2048 ->2
i        <2> aassign[t3] KS ->j
-           <1> ex-list lK ->f
2              <0> pushmark s ->3
e              <2> lslice lK/2 ->f
-                 <1> ex-list lK ->8
3                    <0> pushmark s ->4
4                    <$> const[IV 1] s ->5
5                    <$> const[IV 3] s ->6
6                    <$> const[IV 2] s ->7
7                    <$> const[IV 1] s ->8
-                 <1> ex-list lK ->e
8                    <0> pushmark s ->9
9                    <$> const[IV 5] s ->a
a                    <$> const[IV 9] s ->b
b                    <$> const[IV 1] s ->c
c                    <$> const[IV 3] s ->d
d                    <$> const[IV 2] s ->e
-           <1> ex-list lKPRM* ->i
f              <0> pushmark sRM* ->g
-              <1> ex-rv2sv sKRM*/1 ->h
g                 <#> gvsv[*x] s ->h
-              <1> ex-rv2sv sKRM*/1 ->-
h                 <#> gvsv[*a] s ->i