Function object represents an implementation of some function. There are differend kinds of function providers.
Function object defines:
Function known it's lexical scope (context). It is assigned when parsing the function (module).
When activating the function, new context containing function arguments and it's lexical context is created.
Arguments specified in function call create dynamic context. Dynamic context may be specified to eval function.
Following interface is implemented by function providers.