Better support for runtime JSON
Better config. We can also clone modules as well as groups.

Config file structure has been modified significantly to provide
separate module and group config. Also means it is easier for others
to override modules but still use the same groups.
Now support secondary branches when switching between releases.

This allows a user to specify a branch to move to (say a release branch)
but also to say a secondary branch which they will move to if the
first branch does not exist.