* Improvements to `renderSmart`: it takes advantage of the increased lookahead
  to rank the documents beneath a `Union` by their line length to miminize the
  number of lines printed. This leads to prettier and more compact formatting.
  The ribbon width option has been removed from `renderSmart` because it is
  obviated by the lookahead and ranking mechanisms.

* Tests comparing the behavior of `renderPretty` and `renderSmart`.

* Tests for `columns` and `ribbon`.
Merge branch 'smart'