Support versions of gcc < 4.6

GCC 4.6 accepts the earlier form without comment, but GCC 4.5 chokes on it.
Move segment2 back to segment

The structure already exceeds 512 bytes, so combine the two to make the
code look more like D1X.
Restructure struct segment to align better
Remove unused header files
Remove unused main/desc_id.h
Move reactor Gun_dir,Gun_pos into struct object
Remove N_controlcen_guns cache

Get the counter directly from the relevant reactor model
Add stubs to hide editor reactor differences from D1X
Always use int[] for matcen robot flags
Fix bogus optimization in robot maker paging

The optimization meant to skip materialization centers which had no
robots enabled, but had two bugs.  It tested for a NULL address instead
of inspecting the bits in robot_flags[0], which caused the test to
always succeed.  It also ignored robot_flags[1], so a materialization
center with only high end robots would be wrongly skipped.

Remove the test, since the loop is cheap and handles all cases
correctly.
Rename old_matcen_info to reflect that it is the D1 matcen_info
Remove unused StartNewLevel parameter 'secret_flag'
Remove unused main/gamestat.h
Remove unused main/link.bat
Delete definition of Segment2s

This should have been part of 644f7ce9 ("Move segment2 back to
segment").
Move declaration of last_palette_loaded to gamepal.h
Avoid crash on failure to open HAM file
Remove unused declarations in main/screens.h
Remove unused gauge declarations
Remove unused hostage dialog editor