zink: refactor extension stuff
Extension detection/loading is kind of a disaster now with how much code is copy/pasted around in there already and how much more is likely going to be copy/pasted in the future.
There's 4 stages to the whole thing:
- extension name detection
- feature detection/enable
- property checking
- extension enabling
Currently, two ideas have been proposed to solve this:
- macros. lots of macros.
- python generation of the code