Now using op_mat_mat_prod instead of op_prod for matrix-matrix products.

The reason for splitting the common op_prod was the limitations encountered within the scheduler.
With a common op_prod one first needs to deep-inspect the leaves in order to find out whether
we are dealing with a matrix-vector and matrix-matrix product. By splitting op_prod,
this deep inspection is no longer necessary.

(Similar splittings for separating the matrix-vector product from outer vector products are likely to be applied later)
Fixed missing braces around block for OpenCL vector norm kernels.
Added support for sparse matrix-vector problem using vector ranges and slices.
Fixed compilation problems on GCC 4.4.

- 'typename' used outside template scope
- suffix d for double problematic
- removed external linkage from scheduler
Merge remote-tracking branch 'upstream/master'

Conflicts:
	tests/CMakeLists.txt
Merge remote-tracking branch 'upstream/master'