[#316] Improve Table Drawing

This rehauls the generation of Table Column widths from user-specified
Weights.

Previously we generated widths by applying the relative ratio of weights
to the total width. Now we start with each Column's minimum width and
slowly increase the widths in search of the ideal ratio specified by the
Column weights. Once we hit the target total width, we shrink the widths
to the length of their longest row.

* Remove the minimum width from the getWidth function in the Main.Utils
  module. The function will now always return the actual terminal width
  if it is available.

* Fix a bug where Column widths were smaller than their wrapped content.

* Refactored various parts of the Redmine.FormatTable module.

Closes #316: Tables do not extend to contents minimum length

Closes #322: Shrink Table Columns to maximum row length.