Add programmatic API

Detail are in the doc. 

@arikon @scf2k 
Это, имхо, другая задача. Добавлять его только в `API` бессмысленно – он же тогда не будет применятся при запуске из `cli` или `gui`.  Если добавлять, то во все существующие интерфейсы.