Install dispatcher in semantic analyzer.
Use the dispatcher.

* Fix some typos and naming issues.
Add stubs for semantic analysis.

* Move typedef analysis.
Fix identation.
Fix errors detected by pylint.
Sem: Abolish processing of ast.Param.
Sem: Add callback infrastructure.
Sem: Warn when param hides function name.
Sem: Add type validation for variable definitions.

* Unify processing of VariableDef and ArrayVariableDeffor now.
Sem: Split processing of UnaryExpression.