Add support for creating components defined by ephemeral environments
So far, components can be created only from persistent environments already present in the image-archive. This limitation prevents certain useful workflows, like running emulation sessions based on ephemeral environments to find an optimal machine configuration. The current "configure-store-run" approach for tweaking machine configs is not always applicable or desired.
Hence, the back-end should be adapted to support running ephemeral environments directly:
- Implement helper code for constructing an ephemeral machine config and environment description based on user-provided description
- Port existing endpoint responsible for creating and persisting emulation environments to use the above helper
- Change endpoint code responsible for component creation to also:
- Accept optional user-provided machine configs
- Create ephemeral environments from those configs dynamically