PCI device locking and synchronization

Adds some limited concurrency support to PCI operations.  The main list
of PCI devices is built at boot and is read-only, so we don't
(currently) need to worry much.