remove Dbf._fix_index, use DbfRecord.index setter instead

add truncate() when Dbf.close()
change DbfHeader.changed to readonly
move DbfField.decode_from_record() & DbfField.raw_from_record() to DbfRecord.decode()