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 
To add to my comment about in-source justification, it's good to at least acknowledge each `unsafe` block (e.g. here might be something like `// the vector only grows, so none of these pointers can possibly have been freed, i.e. they're always valid if they're not null.`).