Stream-based shouldDisplay checking

Closes #9895. 

This moves all the logic for helper "truthiness" checking into a stream-friendly implementation.
This logic will needlessly unsubscribe and resubscribe to the isTruthy/length streams whenever the predicate changes, but this isn't necessary. Specifically, if you are switching from one array instance to another it shouldn't resubscribe and I think isTruthy _never_ needs to be unsubscribed from.