BUG: sparse: fix bugs in dia_matrix.setdiag

- hide details of the internal dia_matrix data representation in
  setdiag(), so that behavior matches the other spmatrix types

- fix bugs in resizing self.data, which doesn't always have
  self.shape[1]==N

- add scalar broadcasting behavior to setdiag() for all matrix types