optimize tuple_push|new: overallocate by 3

25% is potion_vm is spent in tuple_push and there in gc_realloc
use gc_realloc only in every 3rd call.
similar for tuple_empty and _new, always alloc size 3 (esp. for the parser and sigs)
optimize sig_at in potion_vm

22% of potion_vm was spent in tuple_new in sig_at.
add a new sig_name_at which does not allocate tuples.
only returns the 1st tuple entry, the name.

BTW: The new sig checks slowed down the bytecode vm dramatically.