Enable use of if_else() for symbolic expressions
Replace boost::tuple with fusion::vector in generator

This removes restriction on number of generated kernel arguments.