re-organise plugins to allow comparators, and add fieldset validation which combines field validation with cross-referencing