Introduce TextResource abstraction

- input to tasks that require textual configuration
- allows to source text from different locations (e.g. configurations)
- created via project.resources.text() factory methods