Option to let users try two options of layer evaluation.
This is temporary and will not be in final Blender 2.8.
(0) Small background info:
0.0 Overrides are more advanced features that require an evaluation order;
0.1 Whatever behavior we decide for visibility, will be mimiced by selectability and eventually renderability;
0.2 A collection is only visible if its parent is visible as well;
Now we have two options:
(1) If object is in any visible collection, object is visible
This pretty much copy the old 20-bit visibility behaviour. This way as long as the object is in a single visible collection the object is visible. It doesn't matter if the object is in a few other invisible collections at the bottom of the stack.
(2) Object visibility is the same as the last evaluated collection
containing this object
This makes visibility order dependent. That way you can create collections to hide specific objects (e.g., armatures), link them to the view layer, leave them invisible and at the bottom of the stack, and toggle their "enability".
This also is inspired by the override evaluation system. Although a boolean override will behave different than visibility because of the 0.2 rule above.
The option (1) is what you get by default now. It's also what we had before implementing the collection enable option.
The option (2) is the previous behaviour, which is now only available via --set-advanced-collection-evaluation