WIP: Filter cache

use a cache to avoid recomputing filters during dirty-checking.

in the modified large-table benchmark delivers 3x speed improvement for number filter (apply duration), but makes the uppercase filter 20% slower

TODO:
- more benchmarking
- special case dates since they are not primitives but can be cheaply compared via `getTime()`
- decide on whether to make the cache an opt-in or an opt-out
I am reading this wrong of if this is the first time the filter is executed and `input` is `undefined` then the result will be undefined and not the value from the filter?