Add a blocksparse multiplication implementation

This is a first step, it may still need more work.
If there is only one output block, we could avoid that copy by having the elements of `%(name)s_out_list` point directly to the parts of the output memory (`%(name)s_outB`), and not performing the summation, right?