Fixes a logical error in solvable?

The second expression of the || clause had its parentheses in the wrong locations causing certain unsolvable grids to remain uncaught. I've added a test case of an eight puzzle with an odd number of inversions and have corrected the error.

Note, `solvable?` will need to be revised to handle the more general n x m case. Currently it is only valid for square grids.
Cleans up solve_it

Slight refactoring and significant renaming of variables to give a better exposition of what is going on.