Add programmatic API

Detail are in the doc. 

@arikon @scf2k 
Мне кажется, такие дефолты должны быть у программы, но при использовании через API их нужно всегда задавать явно. Иначе получается очень хрупкий код, зависящий от `process.cwd()`, который может поменяться в любой момент выполнения программы.