In order to display the type and name of each handle, starting with HEADER, we'd need to prescan all objects (HANDLES) at least for the type, for table records even up to its name.
Currently we can display it only for back references, not future objects.

e.g.
```
reactors[0]: (4.1.C) abs:12 [H* 330] => DICTIONARY 
ownerhandle: (12.1.E) abs:381 [H 330] => BLOCK_HEADER bloko
layer: (5.1.8A) abs:138 [H 8] => LAYER Tavolo 3
```

Benefit: 
Many ODA errors stem from invalid references. This way we could easier see where they are pointing to.

Cost:
Abstract decode_section_handles for all 3 versions.
Seperate handles and decode_add_object code for 2000, 2004 and 2007. From 1 phase to 3 phases: 
* 0 for single-pass (-v3), 
* 1 for first pass (allocate objects and skip), 
* 2 for second pass (already allocated, full object from spec).

prescan objects with -v4
This is a GitHub Issue
repo:libredwg
owner:LibreDWG
Title : prescan objects with -v4
Issue date:

--- start body ---
In order to display the type and name of each handle, starting with HEADER, we'd need to prescan all objects (HANDLES) at least for the type, for table records even up to its name.
Currently we can display it only for back references, not future objects.

e.g.
```
reactors[0]: (4.1.C) abs:12 [H* 330] => DICTIONARY 
ownerhandle: (12.1.E) abs:381 [H 330] => BLOCK_HEADER bloko
layer: (5.1.8A) abs:138 [H 8] => LAYER Tavolo 3
```

Benefit: 
Many ODA errors stem from invalid references. This way we could easier see where they are pointing to.

Cost:
Abstract decode_section_handles for all 3 versions.
Seperate handles and decode_add_object code for 2000, 2004 and 2007. From 1 phase to 3 phases: 
* 0 for single-pass (-v3), 
* 1 for first pass (allocate objects and skip), 
* 2 for second pass (already allocated, full object from spec).

--- end body ---
