Simplify the parser code slightly.
Improve the parser to prepare for the introduction of types
Add half-support for types in expressions: signatures now contain types

Unfortunately it is not possible to add return type support in the
parser so the current types in the signature will be ignored.

Return types can be considered only once a tree has been built and
adjusted for operator precedence and associativity.