Add programmatic API

Detail are in the doc. 

@arikon @scf2k 
@arikon давай все-таки отдельной задачей.  Там не все так быстро, как оказалось, а на этой задаче и так много всего блочится.