Dynamic settings v2.0

A new PR extending #2229, with a class-introspection-based approach to the dynamic settings.

I opened this PR so that the dynamic settings changes could all be seen in one place. To see the difference between #2229 and the changes I made, see https://github.com/jamalex/ka-lite/pull/5
Also: switched from JSON to Python for the hardcoded data here. Seemed it would be more efficient (Python now handles the pre-compilation, caching, etc for us). Might be worth considering for topic data etc (anything that only changes with a software update), for the same reasons.