BUG: sparse: fix crashes/wrong results in broadcasting multiply

The dia_matrices used to broadcast column/row vector elementwise
multiplications should be square.  The matrices are passed directly to
the internal `_mul_*` methods, which make no data size or shape checks, so
wrong size gives wrong results or segfaults with no warnings.