Add a blocksparse multiplication implementation

This is a first step, it may still need more work.
Yes, and that should be fixed.  But I wasn't in the mood to debug scheduling problems as well as logic problems when I wrote this.