fmt: Knuth-Plass implementation; common: add unicode char_width function

fmt:
- Implemented Knuth-Plass optimal linebreaking strategy.
- Added commandline switch -q for "quick" (greedy) split
  mode that does not use Knuth-Plass.
- Right now, Knuth-Plass runs about half as fast as greedy.
  It also inherently uses more memory.
- Updated fmt to use char_width (see below) instead of
  assuming each character width is 1.
- Use i64 for demerits instead of int in K-P, since int is
  pointer sized and will only be 32 bits on some
  architectures.

common:
- Added a support module for computing displayed widths of unicode
  strings based on Markus Kuhn's free implementation at
    http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c
- Also added support for auto-generating the width tables based on
  updated unicode charset data. This script only needs to be run when
  unicode charsets are updated. There is no reason to regenerate this
  during building.
- I'm hopeful that eventually this functionality will be in libcore and we
  will be able to get rid of it.

Closes #223 
I think these two tables could be combined into one `&'static [(char, char, u8)]`, where `u8` is either `0` or `2`. `search_width_table` would then return that number or `1` if the `char` is missing. This would make these cases more efficient since there would only have to be a single search.