Optimization for scope merging when no deps
Addresses T168684688 (#2242). MergeReactiveScopesThatInvalidateTogether does not merge scopes if their output is not guaranteed to change when their inputs do. So for example a case such as `{session_id: bar(props.bar)}` will not merge the scopes for `t0 = bar(props.bar)` and `t1 = {session_id: t0}`, because t0 isn't guaranteed to change when `props.bar` does, and we want to avoid recreating the t1 object unless it semantically changes. But there's a special case: if a scope has no dependencies, then we'll never execute it again anyway. So it doesn't matter what kind of value it produces and it's safe to merge with subsequent scopes: ```javascript return {session_id: bar()} ``` Without the reactive input, `bar()` will always return the same value since we'll only ever call it once anyway. So it's safe to then merge with the scope for the outer object literal.