Circuit Simulation Structure

Some projects used the first c3 for its gate simulation capabilities, which is also desirable from the new cthree. Therefore, being able to evaluate the resulting populations from circuits made of system native gates would be needed. Optionally, it could be nice to have more gates converted to system native gates automatically, but this could be done by the end user as well. The setup of this connects with issue #41 in the question of how to set up the control stack of a gate.
This would comprise a circuit execution structure on a defined cthree-simulation setup. The user should only be entering some sort of circuit object and get back a list of populations (possibly dicts or formatted arrays to stay with the numpy/jax setup) to use for something else.

I can give an example from my project: I have software that executes Process tomography on a single qubit gate. This needs 4x3=12 total circuits to run, each different. I can transpile them into 90-degree x and y rotations before simulation the populations in cthree. The returned Populations are then post-processed by the external software.