perlvariables

This branch's goal is to allow perl more flexibility in creating variables. In particular, this lets you implement getters, setters, and validation functions completely in perl. Also you get enums now. Yay.

This branch has a monster of a history. We squashed some stuff, but it's still hairy. Largely because we started doing one thing and took a 90-degree turn and did another. Here is a summary of what happens. Mostly see baa19ded1881e91c6b97ff8cf8494f614bee07ef.

- Some mechanisms are added to allow us to use perl-Glib's GClosure glue. Hopefully less painful than XS.
- Replaced all void* gunk in variable.c with GValue gunk. We promise this is actually an improvement. Notably there is only one GValue backing all the C variables, rather than the pval,ival,etc. thing.
- Add a single new interface for perl variables and rewrite the existing ones with it. C and perl variables now only interact via strings, as that is all the C code currently cares about. Note that this means an "int" C variable and an "int" perl variable have nothing to do with each other. A perl variable's backing store is managed in perl.
- Add new_variable_enum which looks like the C enums and new_variable_full for full control.