Refactor internal interfaces for clarity

Move from Config-objects-with-private-members to a full separation of
configuration and runtime types, which simplifies a lot of interface
boundaries between different parts of the code.

More specifically, the Server is a lot leaner and its functionality is
clearer. Backends also have a slightly improved interface.
1 job for internal-refactor in 23 seconds
Status Job ID Name Coverage
passed #6122