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