Handle legal item types

This changeset adds some logic to handle legal item types. To keep the conditions from running out of control, I've added a little collector instance that can discriminate between fields relevant to legal item types, and fields relevant to the rest. If there should be a note explaining the interface to the collector, I can add that, but it seems to work.