Add more functions to linalg.

Add more functions into linalg wrapper:

    * Inner Product
    * Norm
    * Grammian generation
    * Project a vector on another basis (the basis may be incomplete)

Signed-off-by: Ignas Anikevicius (gns_ank) <anikevicius@gmail.com>
Speedup the linalg wrapper by using references.

Pass all the arrays as a reference, otherwise, it gets very slow.

Signed-off-by: Ignas Anikevicius (gns_ank) <anikevicius@gmail.com>
Add A random number helper.

This will be definitely useful when generating red noise.

Signed-off-by: Ignas Anikevicius (gns_ank) <anikevicius@gmail.com>
Change the data_generator binary name

Signed-off-by: Ignas Anikevicius (gns_ank) <anikevicius@gmail.com>
Add a data generation routine.

This also fixes lots of lib files. The speed is still lower than
Python/Cython version (for 15000 points the times are 2.999 and 2.2
seconds for C++ and Python versions respectively). I should think of
ways to better manage the data. Some that come to my mind straight away
are:

    - the schedule storage now is sub optimal for speed

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

Signed-off-by: Ignas Anikevicius (gns_ank) <anikevicius@gmail.com>
Fix a bug and optimize a bit.

Previously there was a bug which meant, that each pulsar schedule was
the whole schedule, so the that was the reason why the performance was
so low. Now the performance is good (for 15000 points 0.17 seconds).

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