fix(WatchGroup): correct typo in property name in the eval linked list
test(watchgroup): add test to verify that filter implementation works correctly

My understanding of the algorithm for calling filters is that they should be
implemented as a series of PureFunction calls, as they should produce output
consistently, based on the initial input and other arguments.