Decouple / refactor custom and generated runtimes
Description
This refactoring makes it easier to manage runtimes. It separates generated and custom runtimes in the codebase and decoupled runtime templates from a runtime repository.
This has been extracted from !45 (merged) and is needed to implement a new ~feature