Change the way we calculate covariance matrix

Previously there was some irrational passing of big array into the
matrix term calculation. Fixed that with function redefinitions.

Signed-off-by: Ignas Anikevicius (gns_ank) <anikevicius@gmail.com>
Add a function to build the covariance and grammian matrices

Now it is possible at last to build the grammian matrix. It is not one
of the most stupid algorithms as it uses the already calculated grammian
matrix if you pass it to the function. The function isn't flexible at
the moment, as it is assumed, that we want to extend the grammian and
not to calculate it from scratch. Probably I should have a different
name for this function then.

Also, implement GW and white noise part for the covariance matrix
construction. This also means, that we can finally do inner products,
which are expensive, but hopefully doable in python, otherwise I will
need to reduce the data sets before I port this beast to CUDA or C++.

Also, there are some modifications for the Reduced Basis construction,
but the function seems far from finished and the original Canizares
paper needs to be revised.

Signed-off-by: Ignas Anikevicius (gns_ank) <anikevicius@gmail.com>