wibbles
change Iterate to have the trip count as an Exp Int
Revert "trafo: strictify many things"

This reverts commit 8d71e24037c540efbaaec4b356fd0a17e0d1d7a8.

Conflicts:
	Data/Array/Accelerate/Trafo/Algebra.hs
	Data/Array/Accelerate/Trafo/Simplify.hs
	Data/Array/Accelerate/Trafo/Substitution.hs
shrink after simplification
reorganise the sharing recovery module

Split into top-level functions that handle array and scalar conversion and sharing observation. This permits a separate function to convert (closed) scalar expressions to de Bruijn form, so the show instances now reflect the computation with sharing and simplification.
cleanup, add support for hashable-1.2

fixes: AccelerateHS/Accelerate#72
wibbles
parameterise term hashing by the recursive knot

Conflicts:
	Data/Array/Accelerate/Analysis/Match.hs
parameterise term matching by the recursive knot
repeat scalar simplifications until no changes are made
rewrite x/1 = x; wibbles
only swizzle commutative operators if one op. is constant.

if neither can be reduced and we swap the arguments based on the hash, we can lose conditions such as (x &&* y), where x is much simpler and designed to fail quickly.
Merge branch 'master' of github.com:AccelerateHS/accelerate

Conflicts:
	Data/Array/Accelerate/Analysis/Match.hs
	Data/Array/Accelerate/Trafo/Sharing.hs