engine/: mark some structs 'extern' in a header
engine/: mark some structs 'extern' in a header

This should have been done in the first place but it went unnoticed
because the linker has an odd habit of permitting two structs with the
same name to be defined.

It only became a problem when optimisation was turned on and GCC noticed
that nobody was writing to one particular copy of that struct and
assumed that its contents would always be all-zeros (which is an
assumption that later became untrue once the linker had done its strange
magic).

GNOME/dconf,GNOME/dconf,GNOME/dconf,GNOME/dconf