Можешь объяснить назначение и функциональность context receivers в Kotlin и привести пример того, как они используются для улучшения композиции функций и выразительности DSL? — ДейлиПреп