Added the union operation for getting the union of two shapes.
Introducing constrained tuples
Fixes to constrained tuples for GHC 7.8
Changes to ArraysFlavour.
Extra utilities and structure for transformations.

- Had to move some stuff from Fusion into Base
Made the Subsitution module more general.

Substitution is now performed over an Applicative. This allows for transformations such as strengthening.
Merge branch 'master' of https://github.com/fmma/accelerate into frederick

Conflicts:
	Data/Array/Accelerate/Interpreter.hs
	Data/Array/Accelerate/Trafo/Substitution.hs