Fix :set usage string

Variable isn't optional. Rather either you pass no arguments or a bunch
of them.
Correct tab-completion for set/unset

They only allow -q at the front.
Descriptions should be empty, not NULL

It's annoying for code that assumes non-nullable string. Also we
actually hit a g_return_val_if_fail via g_string_append when
owl_variable_get_description is NULL.
Add BarnOwl::get_variable_info

Returns a dictionary about a given variable.
Revamp set/unset completion

- 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.