Use unscoped blocks instead of chaining

Chaining unscoped with further scopes negates the unscoped call as per
the documentation:
http://apidock.com/rails/ActiveRecord/Base/unscoped/class
Fix a couple of bugs in the testing process
Properly handle changing scopes

Unless the position is explicitly supplied when changing scopes, the
item should be added to the end of the list. To do this, we need to
keep track of whether the position column has been set. Merely tracking
_changed doesn’t cut it as sometimes we will supply a new position that
was the same as the position the item had in the old scope.

increment_positions_on_lower_items now has an avoid clause and I’ve
fixed a buggy test and adjusted the expectations of another to reflect
the proper logic.
Reset column information when the base table changes

- Force Minitest 5+ to reveal test ordering issues
- Use new Minitest class name
- Fix check_top_position to not clip the position value if a default
column is in play
Whitespace fix [ci skip]