Refactor columnWidth calculations

A more thorough (than #1756)  fix for column width calculations. Fixes layout issues that arise when using min/max widths, as well as ones that come from mixing percentages, auto (*s), and manual widths. Should work well in most - hopefully all - situations.

Link to a complex Plunker failing in old code: http://plnkr.co/edit/XZmdH8VXXOwwe4UDE5S6?p=preview

And working handily in new code:  http://plnkr.co/edit/Z9lNZeObZ0jN2nUJrxOn?p=preview