Structured FF collations

Adds an iterator of `FieldCollation` objects, which contain collated fields from structured FF files.

Builds on and replaces #1251, hitting the pertinent outstanding review comments therein, and tidying up some of the logic (especially that for choosing the best target structure for each `FieldCollation` object) and tests.