This doesn't work, as the user will likely try to choose "Custom" before
entering a file name, resulting in an error. So instead, make choosing
"Custom" select the file entry box, and don't try to load it until the
preferences dialog is closed. Built-in themes are still updated
Also included in this commit is a change that makes the custom theme and
custom stringifier preferences persistant, so that the user does not
have to re-enter them if deselects "Custom". This wasn't easy to split
out, so it's included here.
I still need to add support for manually choosing a the custom
stringifier on a per-variable basis.
This shows one possible use of the custom stringifier functionality.
The example function computes str(), unless it takes longer than one
second to compute (it uses signal.alarm() to determine this), in which
case it falls back to type.