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 
As I wrote above:

The pointer is to the contents of a Box that lives inside a Vec. It is a Box so that when the Vec reallocs the Box's contents are still in the same place in memory. The Box does not get deallocated until the function returns, at which point all the pointers are gone, too.