This module adds a `partition(self, accessor)` method to every model.
It accepts for accessor any parameter that would be accepted by `mapped`,
i.e. a string `"field(.subfield)*"` or a function `(lambda x: not x.b)`.
It returns a dictionary with keys that are equal to `set(record.mapped(accessor))`,
and with values that are recordsets
(these recordsets forming a partition of the initial recordset, conveniently).

So if we have a recordset (x | y | z ) such that x.f == True, y.f == z.f == False,
then (x | y | z ).partition("f") == {True: x, False: (y | z)}.
