Redefine r_set_select()

This PR brings with it a complete redefinition of `r_set_select()`.
It is now possible to process selected elements using a user defined function or insert selected elements into another set by passing `r_set_insert` as `procf` and the destination set as `dest`.
Nope, because the way it is, you can pass `r_ser_insert()` and similar functions, where the context comes _first_.
Have a look at libraries like `https://github.com/clibs/inih`. They also have a way to pass user defined stuff as the first parameter. I once used that library to parse the configuration and was able to pass the method to ad values to the config as-is, without a wrapper to change the order of arguments.