Variant: add filter field functionality

* add has_filter() to the public API
* add filters() member function to the public API
* add tests

closes #80
should