feat(util/list): avoid recursion at for_each template

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
perf(util/list): avoid recursion in map and destructor

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
perf(util/list): use buffer of cells instead of buffer of T

T may be a big object. We minimize the ammount of copying using buffer of (pointers to) cells.

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
perf(util/list): use buffer of cells instead of buffer of T