Bump version requirement now that the new EU::XS++ is on CPAN.
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
Add equality testing method for types.
Display variable type in the AST dump.
Remove useless test file.

It used to test that attribute-based type declarations
worked at runtime.
Undef is not tied/overloaded, so just mark it as "unspecified" for now.
Rename Scalar type to Opaque.
OPpLVAL_INTRO is a private flag.
Improved code generation for &&
Add lexical arrays and hashes to the AST.
Refactor Type::dump() into Type::to_string().
Add array and hash types.
implement typed Array/Hash variables.

When declared type matches the variable kind, everything is fine, when
there is a mismatch current behaviour is:

    typed Int @foo -> Array[Int]
    typed Int %foo -> Hash[Int]
    typed Array[...] $foo/%foo -> error
    typed Hash[...] $foo/@foo -> error

Reference type is still missing.
Integer and numeric type tests in C++
Expose and use is_integer & is_numeric methods on Type
Shut up compiler warnings