Use a general partition function

Allow the partition function to do whatever it wants, rather than force it to be
useable as an argument to `partition-by`.  This enables filtering.
Update lift and coverge doc strings