ChipFactory serves as the foundation of an extensible emulator architecture and
provides an interface to construct each chip/component within the system.
It allows for each component to be swapped out and replaced by different implementation.
To accomplish this, special considerations were made to model interactions between chips
without coupling them together. All interactions are managed through separate I/O state
provided as input to each of the chip constructors (IrqLine, Pin).