Add a blocksparse multiplication implementation

This is a first step, it may still need more work.
Actually, now that I dropped the python code, we could just take the indexes on the GPU, avoiding the copy altogether.

But otherwise, this can't be an async copy since we use the memory right after that call.