Fail when records have different lengths

- add allow_empty_records option, which is true by default
Add MissingFieldsError
Distinguish between missing and extra fields