fix off-by-one in column-search loop and add regression test
The loop in `width_dimensions` used an exclusive upper bound
(`..self.cells.len()`), so it never tried placing all cells on a single
row. When cells have varying widths the single-row layout can fit even
though the widest-cell estimate rules it out, producing a suboptimal
result with more rows than necessary.
Change the range to `..=self.cells.len()` and add a regression test
that catches the bug.