add strmap for hash table implementation

To increase the efficiency of the multiplication, we use hash tables for
constant time queries if the given element is nonzero in the matrix.
This approach allows us to perform O(m) time operations where m is the
number of non-zero entries in the matrix.