rules: add DistinctToGroupBy and EmptyGroupByToDistinct

As @7andrew7 points out, this will enable the distributed groupby logic to
push Distinct around.
ProjectToDistinctColumnSelect

move to rules, cleanup
myrialang: use Distinct->GroupBy->Distinct

and fixup tests
ShuffleBeforeDistinct: remove rule from myrialang

It is no longer possible to trigger.
Merge branch 'master' into decompose-distinct
Merge pull request #320 from uwescience/decompose-distinct

Decompose distinct