Semantic Analyser: Bug fixes.

* Prepare to only use the interface in tests.
* Do not allow string+string.
* Allow a=b if lub(a, b) = type(a).
* Ignore assignments in while-loop.
* Detect assignments in if/else.