Return structs by value. Issue #21
Prototype of llvm.ArrayType-backed array.

As opposed to current array implementation, this type must have all dimensions
fully defined. Because array is one value, it is also an aggregate and can be
returned by value.

This will eventually replace the current Array type and Slices will be used
whenever one or more dimensions can vary at run time. It should be noted that
there are still some performance problems with Slices due to pointer aliasing.
Perhaps it will make sense to keep current Array type as something like
FastSlice until those are resolved.
Use new array implementation to store slice shape information by value.

This modifies Structure's attribute access behaviour to follow Slice/Array's
item access one for aggregate values, ie. x.foo returns reference to foo, if
foo is an aggregate.
Implement argument conversion and attributes for new Arrays.
Switch to new array implementation, rotate Array->FastSlice, Array2->Array.
Better tag codes and static shape array names for Array and FastSlice.
Disallow FastSlice stack allocation; we have Arrays for that.
Get rid of unnecessary 'ndim' field in Slice structure.

We can get the same information by getting the length of declared shape.
Remove redundant test.
Propagate type for Slice/FastSlice.ndim.
Fix and simplify Slice test; remove unused import.
CI: Try to install LLVM through 'compiler' option.
Fix requested llvm-config-* name.
CI: Revert to wget'ting LLVM zip file.
CI: Add more logging to llvm-config running stage.
CI: Raise distutils error to indicate llvm-config failure.
Update user guide with recent Array changes.
Merge branch 'aggregate-result' of https://github.com/dtcaciuc/nitrous into aggregate-result
CI: Still trying to debug llvm-config
CI: Fix wrong YAML syntax