make `docopt` as function instead of macros

Fix issue when docstring passed as first argument explicitly - parse function fails on (string? doc) assert

It happens due to the fact that passed `doc` variable at compile time will point to symbol not an actual value. 
I have got rid of macros at all as it is recommended to use functions when it is possible