Modularise service description

- Split service description into multiple files
- Convert service description contents entirely into YAML
- Use YAML constructs to reduce repetition in some model definitions