Fixed type after the field change
Fixed copy-paste mistake
Grounds for the three-pass type parsing

All these unions where introduced with one simple goal: to allow forward
references in the type ID references. Therefore, in the first pass of the
parsing algorithm we store only the integer ID, whereas in the third pass we
solve all this references and we do not need the ID anymore. Therefore, these
two information are mutually exclusive in use and we can have them in an union,
thus waisting no space.
Pointer instead of actual type
Type count member variable

It is used for the second phase to determine the size of the type ID table.
Changed one uint64_t to two uint32_t-s

It seems that the current data is stored in the wrong order and the binary
matching is exactly swapped.
Forward declaration of the ctf_file
Changed the type reading algorithm - description will be in comments