Started writing the matrix product routine, heaven help us
Adding and multiplying sparse matrices are no longer object methods of the sparse matrix class, made them standalone subroutines.
Added a subroutine to allocate a graph pointer depending on a numeric or string input, easier to iterate over graph types when testing things this way
Added a 4th graph test to check graph unions
graph_tests_4 now checks graph products too
Changed graphs from allocatable to pointer in graph_tests for compatibility with Intel Fortran compiler which, may I add, is kind of a dumbass sometimes
matrix_tests_5 now tests the newly-written matrix multiplication routine, which fails
Fixed the bug in sparse matrix product, but likely will be more with column-major ordering
Got rid of some compiler warnings due to unused variables
Work done in sparse matrix product is now delegated to helper subroutines for different row/column-major orderings
Added a matrix copy routine, which is now used in the matrix product routine in the awful edge case
Fixed typos in the fast column access version of matrix multiply that made the algorithm wrong
Added final check to matrix_tests_5 -- terrible edge case B * C' works too
Merge branch 'dev'