Adds supports for collection previews that are rendered automatically when collections are marked as assets. (Or when preview rendering is triggered differently, e.g. through the Refresh Data-Block Previews operator).
Note that only generate a preview if there is renderable geometry visible in the collection. This checks render visibility of collections and objects too. See Lighting collection above, which contains only lights and a hidden object.
Idea in this patch is to create a collection instance empty outside of main for the collection, and then reuse the object rendering code to render the preview. This keeps things very simple and works just fine.