Prevent utils.synchronizeLayoutWithChildren() from forcing components to collide
Prevent utils.synchronizeLayoutWithChildren() from forcing components to collide

We've been running into a problem where sometimes, the grid that is rendered is
different than the grid we specify through `data-grid`. We found this could be
fixed by reversing the order in which we pass our children grid items to RGL,
which led us to believe there was a bug in RGL that was modifying `y`.

After some debugging, we found `utils.synchronizeLayoutWithChildren()`
to be the culprit.

As an example, here's the layout we were providing:

```javascript
[
  { x: 0, y: 1, w: 4, h: 2 },
  { x: 0, y: 0, w: 4, h: 1 }
];
```

When rendered, the first item should visually be below the second. However,
since `synchronizeLayoutWithChildren` synchronizes the layout in the order
it is provided, it was updating the `y` property of the first item
to be `Math.min(bottom(layout), g.y),`, which would end up equaling 0.

This meant that (when `static` was `false`), RGL would eventually recognize
the new collision and update the second item to be visually below the first,
by setting its `y` value to 2.

This was resulting in the grid looking like this:

```javascript
[
  { x: 0, y: 0, w: 4, h: 2 },
  { x: 0, y: 2, w: 4, h: 1 }
];
```

My proposed change moves this logic down into the `utils.compactItem()`
function, since the layout has been sorted by the time this function is
called. Because we're now iterating through the items after they've been
sorted, this is no longer a problem and the correct gridd is rendered.

STRML/react-grid-layout,cp/react-grid-layout,cferrios/react-grid-layout,vpezeshkian/react-grid-layout,vpezeshkian/react-grid-layout,cp/react-grid-layout,vpezeshkian/react-grid-layout,cferrios/react-grid-layout,STRML/react-grid-layout,STRML/react-grid-layout,cp/react-grid-layout,cferrios/react-grid-layout