allocate in 16 byte chunks

malloc's return 16 byte aligned data anyway, so round up allocation sizes to 16 byte boundaries. This should reduce the number of realloc's.