Device objects and device elements
Description
We should create a general DeviceObject class, which can generate configs for a complex quantum device, consisting of multiple DeviceElements. The DeviceElement is a single quantum element such as a transmon or spin qubit. Objects such as the TransmonElement will inherit from this DeviceElement.
Motivation
As we do more complex experiments, we will need an object similar to TransmonElement which can describe more complex quantum devices. This could be a chip containing multiple transmons, or more general quantum devices such as spin-qubits, TWPAs etc. This top-level object will be called the DeviceObject. The DeviceObject will contain references to sub-devices which are described by the DeviceElement class. These generate sub-configs which are compiled into the main config by DeviceObject. All of our devices, such as transmons, would inherit from the main DeviceElement class. There would be one instrument_coordinator for all of them, so the reference to this would be stored in the DeviceObject.
In !152 (merged), we have temporarily put the instrument_coordinator parameter in the TransmonElement, so that we have something to work with in upcoming experiments.
For reference, the issues workflow is described in the contribution guidelines.