Merge MultiDim
First sweep of simplification and cleaning up of the MultiDim module

I apologize for the size of this commit but git did something wierd that
I didn't know how to handle.

The big change in MultiDim is that we now have Manifest arrays which
always allocated to memory. Manifest arrays have a Syntactic instance but
the Syntactic instance for Pull and Push are gone so all memory allocation
goes via Manifest, using the `store` function.

Furthermore, functions are overloaded in their input arguments in the style
introduced by Koen, namely having a class Pully instantiated for all
vector types which can be converted to a Pull vector (all types of vectors,
Manifest, Pull and Push, are instances of this class.) I've introduce another
class, Pully, with Manifest and Pull as instances, to capture vectors which
can be converted to Pull-vectors.
Merge branch 'arrays' of https://github.com/Feldspar/feldspar-language into arrays

Conflicts:
	src/Feldspar/Vector/MultiDim.hs