Add module Data.Matrix to base

A base module for operations on matrices. Functions are defined for matrices/vectors of generic algebraic classes (mostly rings) for maximum generality. Numeric data types are also instantiated as rings so that these functions will be defined for them.
I suppose we can (and should) use `(+)` and/or `(<+>)` from `Num` and `Semigroup` classes, shouldn't we? Also `Vector` type should be an instance of `VectorSpace` class and `Matrix` type be an instance of `Ring` class (or even `Algebra` class which we don't have yet).