This diff fixes a problem with the options page introduced in rP21527/D1291, refs #4747.
The diff made it so that the diplomacy colors are only updated when the diplomacy color option changed when closing the options dialog,
instead of doing that every turn.
The implementation was wrong however and has dealt various damage later on by multiple people changing the session code without knowing that the
options.json file hardcodes global session function names.
The second big problem with this implementation is that it prevents the use of anonymous or functions stored in objects and class instances, refs #5387.
The same problem was addressed for PopGUIPage in D1684/rP22676.
The session code being located in options.json problem is solved in this patch by inverting the callback mechanism and
just returning the names of the config changes that were changed by the options page and letting the session decide
for itself what it makes from that.
This is achieved by using the simple event subsciption system from D2378/rP23076.
Aside from fixing old defects, it also empowers and encourages session code authors to implement more conditional reloads / reactions to the options page.
For example the FPS counter is rebuilt once per frame, and there are up to 4 items in that counter (FPS + realtime + ingame time + ceasefire time).
If those were to be split into four classes, there would be four function calls, but less function calls if the counters are disabled in the options page.
et cetera.
Finally the diff implements the RangeOverlayManager class on the GUI side (since otherwise the options page reaction code would be ugly),
continuing the JS session page GUI rewrite in the course of #5387.
Notice the reset to default mechanism falsely didn't trigger updates, which is fixed here too.
Another present defect fixed in this revision proposal is that one doesn't have to reselect the entities anymore after closing the options page dialog anymore to have the changes take effect.