filter implementation

Adds a `createSet(filterFunction)` as mentioned in IRC.

This uses  arbitary filter logic instead of `is key === value`