* is now an n-ary operator

Actually, it's several operators, one for each arity, since Z3 does not
directly support n-ary functions.  This is all abstracted by Syntax already
anyway, so it doesn't change much for the rest of the code! The only places
where one has to be careful is when testing whether two function declarations
represent the same operation, as comparing them with Z3.FuncDecl.equal is not
enough anymore: for a star of arity 2 vs a star of arity 3, Z3.FuncDecl.equal
would return false. One can use Syntax.is_star_op to deal with these cases.