reworked hierarchy of classes representing type of data in data section

- AbstractData is base class for all. Contains properties Offset and DataTableOffset
- UnicodeString - data is a string
- UnknownData - data is 4 byte integer
- AbstractDataList - baseclass for all classes representing list data (Int32List, UInt32List, UInt64List)
added some checks for validate single record info from XML

- record length should be equal sum of length of fields (which can be 1,2,4,8 bytes of length)
DatContainer: added function to determine record length from actual .dat file data

It's compared with length gotten from XML file and throws exception if they aren't equal.
updated XML definitions

- fixed entries with wrong record_length
- fixed entries with total length of fields not equal record_length
- added dummy record information for .dat files with 0 records
- changed some field descriptions