Keeping order in tree makes AST operation harder. And there could be
invalid cases if trees could be generated and compounded freely, like:
SetA(order=define) & SetB(order=define) ^^^^^^ couldn't be satisfied
This patch changes the code to calculate order on the fly, during tree
traversal. Optimization of reordering and arguments is preserved by
introducing a new internal operation flipand.
Perhaps the default order=defineorder would be safer
at this point.