Add programmatic API

Detail are in the doc. 

@arikon @scf2k 
@SevInf Не хотим ли мы в тесты пробрасывать методы `gemini` в `global`?