refine docstring onlammable?
Fix bug that allowed illegal moves.

If movement in a direction causes no change, the move should be thrown out.
I wasn't verifying that the attempted move caused change, and I was still
randomizing a new 2/4 onto the board. This change fixes that by checking to be
sure the new board (after the attempted move) is different than the old board.
Add epicycle to my heuristic AI.

This tweak was counter-productive when I still had the bug that added new random
2/4s to the board after illegal moves. But now it's productive to always have
a [:l :d] pattern instead of just a [:l :l :l ...] pattern until you can't move
:l.
Add a human-intelligence player.

Print the board, wait for input.