Add forEachData() to loop over data records skipping header row

I noticed this common pattern which is related to the common
structure of data records; I added the utility to define the
peculiar behavior in a single place.
Add the list of authors in "filtered-selected" event

At this step, the list of authors set for the default option
is incorrect: this is an empty array instead of the full list
of authors.
Do not set authors property in filter object for default option

The authors property will no longer be set for an inactive filter
(it used to be wrongly set to an empty array) unless it selects
the whole list of authors explicitly.
Add forEachProperty to utility methods
Switch parameters name and value in callback of forEachProperty

I noticed at first use that the callback may need the value
without the name. The contrary seems less likely. I thus decided
to make the definition of the name optional in the callback,
pushing the name in last position.

This change is consistent with the definition of the callback
in the utility function forEach(), which also provides the value
as first argument to the callback, and the index, which is also
the name of a property in an array, as second argument.
Add missing declaration of no() in filter-utils module
Add module to collect filters

The module listens to the event "filter-selected"
and keeps track of the set of filters currently selected.
To notify other modules of changes in the set of filters,
it publishes the events "filter-created" when a filter which
was not selected gets selected, "filter-updated" when a filter
gets selected with a new value (no check is performed that the
value is actually different), and "filter-deleted" when a
filter which was previously selected is reset to an inactive
state (i.e. matches all authors, thus filtering nothing).