prelude: add vector concat (++)
expose shape intersection in the source language
generalise (++) to multidimensional arrays

concatenates the outermost dimension, intersects the lower dimensional components.
prelude: add 5-array zip and unzip
shrink/fusion: don't count 'unzip' as using an array
comment wibbles
pretty: better handling of tuples
zips and unzips up to 9-tuples
fusion/aletD: always fuse unzips

More generally, consider the bound term when deciding whether to eliminate the let binding. At the moment this is just a special case checking for 'unzip' structures.
fix complexity of aletD

make sure to only call 'embedAcc' once on each of the bound/body expressions
export 'subTop' from substitution
debug stats for unzip
TLM note
consistency; rename cond->acond, introduce scalar cond
move the non smart-constructors from Language to Prelude
fusion/unzip fix

fix close AccelerateHS/accelerate#111
client code needs overlapping instances
simpl: get a minimal set of shape intersections
simpl: reimplement intersect, fix stats counter
Merge branch 'refs/heads/master' into iteration

Conflicts:
	Data/Array/Accelerate.hs
	Data/Array/Accelerate/Language.hs
	Data/Array/Accelerate/Trafo/Sharing.hs
	Data/Array/Accelerate/Trafo/Simplify.hs