error messages: more precise error for invalid typing of record
This solves #213 (closed) and #369 (closed) by giving more precise errors.
This splits the BadRecordField exception into:
- BadRecordCons -> Type found has several constructors
- BadRecordType -> Type found is not a record type or possess an invariant
- BadRecordUnnamed -> Type found is not a record type because it has unnamed fields.
This also adds several examples raising these exceptions.