code: function(prepend, tileSize) {
          var grid = this.grid;
          var rowIndex = prepend ? 0 : (grid.length - 1);
          var sign = prepend ? -1 : 1;
          var rowSign = this.rowSign;
          var tileLayout = this.gridLayout;
          tileLayout.startrow += sign * rowSign;
  
          var modelRow = grid[rowIndex];
          var row = grid[prepend ? 'pop' : 'shift']();
          for (var i=0, len=row.length; i<len; i++) {
              var tile = row[i];
              var position = modelRow[i].position.clone();
              position.y += tileSize.h * sign;
              tile.moveTo(this.getTileBoundsForGridIndex(rowIndex, i), position);
          }
          grid[prepend ? 'unshift' : 'push'](row);
      }
docs: Method: shiftRow
  Shifty grid work
  
  Parameters:
  prepend - {Boolean} if true, prepend to beginning.
  if false, then append to end
  tileSize - {Object} rendered tile size; object with w and h properties