No let declaration within a block

raises error on `if (true) let x=1;` and more generally on let declaration not directly within a block.

(branch based on PR #942, #943 and #946)