python: by maps call to compute onto child

In Python's by implementation we called `compute` on each group

    d = dict((k, compute(t.apply, group))
                for k, group in groups.items())

We actually should have been mapping the child of the by operation to the
group.

    d = dict((k, compute(t.apply, {t.child, group}))
                for k, group in groups.items())

Otherwise it just maps the data `group` to the lowest leaf it can find.

This adapts a test by @talumbau in #420

Fixes #420