Optimize more Query.filter() cases

Instead of only attempting to optimize the query when a single property is passed, this implementation iterates over all the properties and does an indexed `.getAll()` on the first index available.