refactored ImportedFunctions/ImportedFunctionsProvider
fixed naming in FakeSignature
redesigned OverridenImportError -> OverridenBuiltinFunctionError
refactoring classes in .parse package to use Name for function names instead of String
refactored DependencySorter
refactored SymbolTable so it has the same API as Module
refactored SmoothExecutor so it does not depend on DefinedFunction interface but uses just methods provided by Function interface
DefinedFunction no longer implements Taskable
redesigned Module so it is more generic and uses Function instead of DefinedFunction
refactored Module into Module interface and ImmutableModule implementation
renamed SymbolTable.names() -> availableNames() to bring it closer to Module API
added Empty.nameToFunctionMap()
added Module.containsFunction()