semilinear: huge overhaul of the semilinear sets

This implements ability to use a Divider for a SparseVec and exposes
more flexibility of specifying how the (Semi)LinearSet should be
simplified.