Software architecture description for the runtime system

Summary
The first version focuses on the internal architecture with only abstract interfaces for external integrations. The second one details the internal interfaces and interface specifications for subsystems.