Introducing types to allow flowing compilation settings to the application

`ProjectMetadataProvider` was already taken. `Manifest` seemed like the next best option