Remove key-collision invariant.

Keys often use dynamic data that are out of the control of the person creating the React component so key-collisions might happen in user code. While it is still important to avoid that from happening, we can still keep rendering with limited user impact (only impacts perf). This change makes it so that key collisions are logged the same as missing key warnings and it assigns fallback IDs for collisions.

Not sure if this is the best solution and whether it might break something - everything seemed to work fine from my testing. 

Fixes #566.

cc @spicyj