Allow PCI Config space parsing to handle types
- Update the PCI config space parsing to be able to handle multiple header types.
- Use a trait to abstract out reading from the config space in order to allow testing/fuzzing of the parser.
I'd like to get some feedback on the general idea/approach in the
meantime. Originally this started when I started working on a driver
virtio, when I realized we didn't parse out the capability structures.