Filters: Support matching lists against lists.

There are three match types for now, with matching list being the user-specified list in the filter, and value
list the list against which is matched:
- Require all items in the value list to be in the matching list, and vice versa (i.e. mathematical equality
  of sets). This is specified using the "==" operator, and the "!=" operator negates it. Example:
  "Field==[ValueA, ValueB]" or "Field!=[ValueA, ValueB]".
- Require all items in the matching list to be in the value list. This is specified using the "*=" operator, with
  the ","-conjunction between items in the list. For example: "Field*=[ValueA, ValueB]".
- Require one item from the matching list to be in the value list. This is specified using the "*=" operator, but
  with the "|"-conjunction between the list items. For example: "Field*=[ValueA | ValueB]".

For a matching list with only one item, the last two options are equal, so it doesn't matter that it's not possible to
differ between those.

There is no support for matching all lists that don't contain a subset yet.
Tests: Fix references to old xunit version.
ScraperService: Fix x86 targeting and output directory
Fix some compiler warnings