rose edit: speed-up by avoiding ConfigNode updates

This change speeds up rose edit's updating and error
checking by removing the constant re-setting of
ConfigNode objects. This is done because the macros
used for error checking (compulsory, value) and the
trigger macro all accept ConfigNode objects.

This change gives alternate interfaces for each of
those macros so that rose edit can re-use their
logic.

For a large configuration, this has sped up the
change-a-variable update time by more than a
factor of 4. ConfigNode updates are still done
for custom macro running, upgrading, and saving.

Additional changes:
 * the compulsory macro has been refactored to
 correctly detect missing compulsory options in all
 duplicate sections - previously, it was just finding
 the first duplicate section's options. Test the new
 app to see the difference in behaviour.
 * latent pages with compulsory errors will now
 correctly display them.
rose edit: fix bugs found during testing
rose edit: postpone compulsory errors for add section
rose edit: rename no_latent to skip_latent, etc
rose edit: rename new MacroBase class
Merge pull request #1117 from benfitzpatrick/rose-edit.speedup

rose edit: reduce updating of ConfigNode
rose app-run: add tests for read/write permission
Merge pull request #1120 from benfitzpatrick/rose-app-run.permission-tests

rose app-run: add tests for read/write permission
Merge remote branch 'upstream/master' into rose-edit.fix_list_widget_bug