Use document fragments for edge cases in dangerouslyRenderMarkup

A document fragment will be included in the returned array for any markup that renders as more or less than one node.

This deviation from typical one-to-one rendering previously caused an invariant failure, so no code that previously worked will now be broken, and most code that was previously broken because of unexpected parsing behavior will now just work.  Any code broken as a result of this commit probably just needs to add some logic to handle document fragments.  But hey, we didn't call it `dangerouslyRenderMarkup` for nothing.

cc @yungsters @zpao @sebmarkbage @jordwalke