Implement moving between lists with array scope

When check_scope is called it checks if there have been any changes to scope properties. This is handled by a new private method, scope_changed? which looks at a new method 'scope' which returns the raw scope data. If the scope has changed, swap_changed attributes is called, this sets all the changes back to the objects previous state so we can update it's previous list. The changes are then swapped back using the same method and we add it to the new list.

TODO:

- Consider changing check_scope to a better name like update_previous_list?
- How should this handle scopes that use string interpolation? Should the scope always be considered changed?