Which streams should be put under ModeratedNoticeStream is probably open
to debate. But at least the public ones should hide the posts from users
that are sandboxed.
We don't guess the current profile anymore if the value of the profile === -1
Also sets $this->scoped for all ScopingNoticeStream inheritors, which just
like in an Action can be null if we're not scoped in any way (logged in).
Since we store 'favorite' verbs as notices now too, they caused a lot of
"null" notices that might not be interesting before we handle them better
in the UIs.
For those pages where threading is important, we now have an extra filtering stream
class to skip stuff in conversations that have "already" been seen.
There were some differences between defaults for the
NoticeStream::getNoticeIds() function and some of its subclasses'
implementations. So, I got them rationalized.
Added filtering code so that notice streams check notice scope.
Added new class to implement filtering a stream, FilteringNoticeStream.
Added a subclass that does the logic for checking Notice scope.
And made all the streams use ScopingNoticeStream.