Variant: add filter field functionality

* add has_filter() to the public API
* add filters() member function to the public API
* add tests

closes #80
begin() and end() pass through to the iterator, so this could as well:

return *VariantFiltersIterator{m_header, m_body, index};