Broke operator flattening into a separate module. Corrected minor ordering error in NFSub->FSub. Flatten now depends on FlattenOps, which means that we can't have operator flattening rely on arbitrary expression flattening. This seems okay for now. Perhaps reconsider later.