Consider changing nodes to be circuit-specific
Nodes are currently singletons. This was originally to avoid having to require the user having to call
circuit.get_node() all the time to reference nodes in order to perform analyses, but in reality it is also possible to specify nodes by their string names only in most (all?) parts of the public API, making this singleton property a bit pointless. Furthermore, the singleton property of nodes makes deep copying problematic (see
circuit.__deepcopy__() added in 65bbad6a).
Since this property seems not necessary, it might be worth removing it. Then nodes would be stored in a circuit and not the global state.