only one merger per traversal

this fixes a rare situation:

if you had a row with `11133`, and moved right, you would get:

`...333`

But if you moved left on the same row, you would get:

`9....`

Conversely, if you had a row with `33111` and moved left, you would get:

`333..`

But if you moved right on the same row, you would get:

`....9`

A similar situation occurs with vertical moves and similar tile patterns in columns.