Issue #1394: Allow var variables to shadow let variables.

I added a new meta-property to the block-scoped stack of
variables called (shadowed). When addlabel adds a new
function level variable it checks whether there's already
a block-scoped variable with the same name in the current
scope and if there is, it sets the (shadowed) property of
that variable to true. getlabel function respects that
property and doesn't return variables with (shadowed) == true.

At the end of doFunction we go over a list of all variables
defined in this function and un-shadow their block-scoped
friends if needed.

A bit hacky but I don't have any better idea right now
that doesn't involve big refactoring that merges blockscope
and funct trees together.
Issue #1388: Warn about missing 'use strict' in files w/o funcs
Issue #1363: Don't consider => params as undefined vars
Version 2.4.0; Holidays edition
Issue #1433: Remove overzealous W092

Signed-off-by: Anton Kovalyov <anton@kovalyov.net>
Issue #1439: Make extend option to overwrite in the right direction

Signed-off-by: Anton Kovalyov <anton@kovalyov.net>
Issue #1449: Check for hasOwnProperty when iterating through tokens

Signed-off-by: Anton Kovalyov <anton@kovalyov.net>
Remove checks for generator functions without yield.

Generators without a yield are valid, making this check too strict.

For example:

    function *() {} // This is useless but valid.

This commit makes the check optional (`noyield` switches the check
off), adds a unit test for the new switch, and makes the error for
unyielding generators a warning.

References:

    Closes #1123