Return types in method stub for hill_climb()

Added a new namedtuple Move(ordering, disagreement) returned by the helper
function _find_move(). hill_climb() now returns a default ordering of (0,
..., TOTAL_SLICES).
Moved _find_move() out of hill_climb()

It's not a closure, just an internal method. Rather than make things more
complex, moved it out into module scope. Prefixed _ should indicate
module-internal nature of method.
Added check for valid ordering to other methods
Consolidated imports

Also added random as an import for shuffle()
(to later be used in seeding the hill-climbing process.)
Implemented _find_move()

Rather than using a namedtuple as the return type, _find_move() now just
returns a better ordering that it has found (without the disagreement).
The new semantics are: return ordering with better disagreement if it
exists, or return None otherwise.