Add programmatic API

Detail are in the doc. 

@arikon @scf2k 
Можем требовать существующую папку на диске, чтобы уже на этапе парсинга опций свалиться?
Или там по ходу папка будет создаваться?