Tighter parser types 1

Move all constructors for the statement sum-type to their own types.
Tighter parser types 2

Fix some types that were too general.
Tentative fix for issue 40