Revamp set/unset completion

Because I can. This branch makes it so that
- unset <tab> only completes takes_on_off variables
- Variables with validsettings <path> complete as file paths
- Variables with validsettings a comma-separated list of options complete appropriately.