Add a blocksparse multiplication implementation

This is a first step, it may still need more work.
Should (could?) we use an asynchronous transfer here instead?