rewrote list_iota to have proper types(i.e restult list is a list of
integers if all arguments are integers) and wrote a couple functions in
generate_prims.el to generate type checking functions.

previously with iota (iota <number>) would always return a list of
ints(it still does) and (iota <number> <number> [<number>]) would return
a list of doubles, which meant (list 1 2 3 4 5) wouldn't necessarly be
equal to (iota 1 5). I revised that so that now a list of integers is
returned whenever all argumnets are nil/integers