consolidate _fuzzy_group_* into fuzzy_group with sane kwords

If we allowed commutative to be None then `args = [a.is_commutative for a in expr.args]; if fuzzy_group(args, false="NN") is False or fuzzy_group(args, none="FF") is not None` then the Mul_expression can be factored as commutative.

The fuzzy_groups functions are really just (an attempted optimization of):

```
if all(args):
    return True
if any(a is trump for a in args) or double_jeopardy and args.count(nontrump) > 1:
    return trump
```

Here's another option for keywords:

none_when = "N or FF" or "F"
false_when = "F or NN" or "F"