Rewrote VarcharList.

To support faster read times it no longer utilizes varchar at all. It
probably needs a better name now. The way it works is this. Each list
gets it own block chain. The items are packed into the blocks like an
array list, with the caveat that the lengths of the items must be
aligned to block boundries. This causes some complication but in general
it seems to be a sound approach. In the future I may extend it with
deleting items (using tombstones in the middle), popping items and other
list operations. I also have no way of accessing items individually.
This would be difficult without re-archtecting the system to create a
sorted index into the items which give their start point and size.

Signed-off-by: Tim Henderson <tim.tadh@gmail.com>