Separate user configs from internal settings storage

Previously users had to edit `settings.json` to set things like Zoom.
That was annoying, and it was prone to trouble when the app overwrote
that file while it was being edited. Instead, read and execute
`config.py` to get user settings from ordinary Python variables. Rename
the internal settings file to `internal_data.json` to make it clear that
users shouldn't edit it.

For backwards compatibility, read `settings.json` if
`internal_data.json` doesn't exist. Also, create `config.py` on startup
with a helpful comment in it.

We need to avoid a subtle issue where user settings get mixed with
internal settings and written to the internal data file. This would be
trouble if a user later deleted a setting, because its old value would
still be in effect as an internal setting. The basic issue here is that
the original settings model was really designed as internal storage, not
as a user-editable configuration. The least bad solution seems to be to
keep track of a separate `_internal_settings` dictionary, which does not
contain user settings. Only that dic is persisted to disk.  Setting
changes then happens in both the `_settings` and `_internal_settings`
dics, reads come from `_settings`, and user settings are applied only to
`_settings`.