Finished work on generalized slice

Generalised slice interface is copied from std::gslice and allows to
create views to multidimensional data stored in 1D vector.
Slice may be used as:

    vex::vector<double> x(ctx, 2 * n);
    vex::vector<double> y(ctx, n);

    cl_ulong size   = n;
    cl_ulong stride = 2;

    vex::gslice<1> slice(0, &size, &stride);

    y = slice(x); // Put every even element from x into y.

Only single-device contexts are supported. Views are currently
read-only.

@neapel, @d-meiser: this may in principle be used as a basis for
multi_array slicing.

refs #31, #37