Add programmatic API

Detail are in the doc. 

@arikon @scf2k 
Почему в строку, а не в наследников `Error` разного типа? В случае, когда ок, можно в `true`.