Fix check_scope to work on lists with array scopes

Squashed commits follow:

Fix issue with old order not being set

When moving an item between lists, previously the old order was not being set on the record before calling `decrement_positions_on_lower_items`. This had the side effect of leaving the previous list with duplicate or incorrect order numbers if you moved the item to a new list with a different position.

TODO: Add support for multiple scope conditions when moving an item between lists. Refactor `check_scope` for clarity and DRYness.

Conflicts:
	lib/acts_as_list/active_record/acts/list.rb

Add failing tests

Add failing tests for moving items between lists with multiple scopes

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?

Remove scope_name function

Add comments to private methods

Add tests for changing only one scope property

Previous tests only covered changing all scope properties at once.

Add tests for moving to empty list

Add scope_name function back in

Pass move_within_scope tests