With this change, the driver's setup function only has to be added
to the 'driver_init_functions'-array and it will be called once
'setup_drivers' is called.
The setup_drivers routine existed locally for some time now, so now
it also exists in the repository. It has gone through two iterations:
1. The drivers are all listed in a null-terminated array of function
pointers to initialization functions (this didn't work and the time
for debugging just wasn't there).
2. All drivers (currently, only the PCI driver, because that's the
only one that exists) are initialized after each other; their
initialization functions are called manually.
It might be possible that the bug from the first iteration was due to
the memory space being offset by 128 or 256 bytes; it might be useful
to use that concept again because then, it will be easier to add new
drivers. That's not of high importance now, though.
The newly added utility routine reads the content of a known PCI
device's register given the index assigned to the device during
enumeration and the index of the register (and the PCI driver area,
but that is implied).