Only reuse server-rendered React nodes if there are no unexpected siblings

PR for #996

I choose to believe that users should be correcting their own "mistakes", rather than have React transparently fix and unknowingly introduce weird edge-cases and visual artifacts.

Quite simply, this PR enforces that there are no other nodes except the node rendered by React inside the target, it obviously does not warn if there isn't a node rendered by React inside the target. It only performs this check in DEV.

There is another test in #1903 which complements this PR.
Can do, I was a bit unsure and did a quick search, found a file using invariant in dev and didn't think more about it. We really should allow people to turn some warnings into errors though, because this is a clear case of "you really don't want to do/miss this".