Added an abstract block sparse matrix data type and a BCSR implementation, as well as making a generic procedure matmul which overloads the 4 different matvec routines in the block sparse matrix class. Also fixed a bug in coo_matrix and changed the matrix_tests program slightly.