Add a blocksparse multiplication implementation

This is a first step, it may still need more work.
Actually this would be for the case where there is only one input block (no matter how many output blocks).  But yeah, it would be faster that way, and it would avoid the final kernel call entirely.