Fixed a bug in host-based matrix-vector multiplications.

{start1, inc1} was interchanged with {start2, inc2}.
Issue only showed up with ranges and slices.
Test was apparently suffering from an overflow, hence the issue was uncaught.
Fixed test as well.
Unified operator<< for matrices.

Used separate overloads for matrix, matrix_range, matrix_slice.
Now a common implementation based on matrix_base is provided.
Scheduler: Added support for matrix-vector multiplications.

Also added an appropriate test case.