Configurator

If it isn't too much trouble I would like to submit this as-is for now, because although the functionality is all there, I cannot properly add any ini options to it until they are re-worked one by one to allow for changing at runtime.

However I don't know when I'll be able to do that, and I would rather this branch doesn't become huge and very far behind. Special input methods are sketched out roughly, but it is impossible to flesh them out without anything to test them on.

The GUIEnh options are lucky, in that they were designed to be able to go either way at runtime. I have also added one bonus option, and there are a couple of bugfixes that I uncovered while testing.