Initial commit in the arrays branch. I've added a whole bunch of modules
for array programming. The hope is to have a very nice story for array
programming in Feldspar.
Merge branch 'master' into arrays
Some additions and bugfixes in Feldspar.Vector.Opt. It's still not finished
but at least it type checks now.
Some further improvements to Feldspar.Vector.Opt
Hacking on Feldspar.Vector.MultiDim and .Shape to get them into better shape.

The Shape module is shaping up nicely now. MultiDim has quite some way to go.
It currently typechecks but that's only because I've commented out quite a few
things.
Fix shape concatenation in Feldspar.Vector.MultiDim plus some other small
things.
Fix up slices of shapes in Feldspar.Vector.MultiDim.
Slices have their own data type now to replace the class that was in Repa.
The constructors of the Slice data type has to be different than those in
the Shape class and this means that specifying Slices looks different from
what it looks like in Repa. I've currently gone for a syntax which looks
rather similar but it might come across as confusing when trying to write
slices.
Fixup the Feldspar.Vector.Pull so that it type checks. Still some functions
waiting to be defined though.
Added `indexed` function to Feldspar/Vector/MultiDim.hs
Add Feldspar/Vector/Unbox which implements unboxed vectors. In this module
the vector type is an associated data type which changes based on the type
of elements and can therefore have more efficient representations.
Take care of some FIXMEs
Add Vector1/Vector2 aliases.
Add zip3/4 and zipWith3/4.
Add head, tail, last.
Implement fold1.
Use lenght instead of duplicating the implementation.
Merge pull request #50 from pjonsson/vector-compat

Implement partial Vector compatibility for Opt.
Uncomment the Syntactic instance.
Generalize the type of Enum from Data Index to Integral a => Data a.
Add Opt.scan.