Element types

This class is mainly used to define the touch method. This is used internally
in the imeplementation of Repa to prevent let-binding from being floated
inappropriately by the GHC simplifier. Doing a seq sometimes isn't enough,
because the GHC simplifier can erase these, and still move around the bindings.

This version creates a thunk that will evaluate the array on demand.
If you force it when another parallel computation is already running
then you will get a runtime warning and evaluation will be sequential.
Use deepSeqArray and now to ensure that each array is evaluated
before proceeding to the next one.

If unsure then just use the monadic version computeP. This one ensures
that each array is fully evaluated before continuing.