Support Arbitrary Array Attribute Declarations

This adds support for an unbound level of array type descriptors.
Basically, you can specify your array attributes like this now:

`
attribute
  array a,
  array<int> b,
  array<float> c,
  array<string> d,
  array<bool> e,
  array<array> f,
  array<callable> g,
  array<Foo> h,
  array<string => int> i,
  array<int => string> j,
  array<array<string => int>> k;
`

Just something to remember, PHP type-casts numeric string keys into
integers. So array(‘123’ => 123) will fail an attribute looking for an
array with string keys. Because PHP.