Significant performance improvement in valid-move? function

Significant performance improvement by preceding expensive `get-pieces-to-flip` with much cheaper `has-opposite-neighbors?`.