fix(filterFilter): let expression object `{$: '...'}` also match primitive items

Closes #10428
Here's the special case we have:

1. We have an array of primitive values.
2. We have an object containing key `$`.

Given that we won't be matching any specific properties in a primitive value, we still want to take the `$` property into consideration --- because historically, we did this. Historically, we had a predicate for each property of the expression object, but it's a lot faster to not do that so we probably don't want to add it back --- that is why it would fail if you had another property in the object in addition to `$`. So what we should do instead is just --- if the item is a primitive value, and the expression is an object with a `$` key, match the primitive value against the value of `$`.