Added checking for single strings within eval-style statements

This is currently checking "eval", "setTimeout" and "setInterval".
Support for other types of eval is coming.

It works by looking for statements which contain just a string.
In that case, the string is put onto a list, and all of the strings
are checked at the end.
Added a check for window.setTimeout containing syntax errors
Fix the eval code to work properly in the case of multiple eval()s
Proper unit tests for the deep-eval() checks
Comment for window.setTimeout check
Renamed function 'internal' to 'addInternalSrc'

It's a bit clearer now.
Added new options maxstatementsperfunction, maxnestedblockdepthperfunction and maxparametersperfunction
Added new option maxcyclomaticcomplexitysperfunction
Fixed type for new option  maxcyclomaticcomplexitysperfunction ->maxcyclomaticcomplexityperfunction
Made the option names maxstatementsperfunction, maxnestedblockdepthperfunction, maxparametersperfunction and maxcyclomaticcomplexityperfunction shorter by removing the suffix 'perfunction'
Renamed options: maxparameters -> maxparams, maxnestedblockdepth -> maxdepth and maxcyclomaticcomplexity -> maxcomplexity
Adds Map, Set, WeakMap: standard, members and envs tests. Fixes gh-626
Merge pull request #627 from rwldrn/626

Adds Map, Set, WeakMap: standard, members and envs tests. Fixes GH-626

Note: These globals are from ES6, not ES5.
Merge branch 'master' of git://github.com/shybyte/jshint into shybyte-master

Resolved conflicts, fixed a typo in the complexity warning, removed
word 'cyclomatic' from functions and variables (I thought it was
redundant) and made some minor styling changes.

Conflicts:
	jshint.js
	tests/unit/options.js
Updated a list of globals for MooTools.

Apparently, it is supposed to be Asset and not Assets. We also forgot
DOMEvent global.

Closes GH-623.
Fix broken tests.

My commit--56700fc43c43ecae9a7de7d5b6f3b984814f87e0--broke tests because
I forgot to update tests/unit/envs.js and add DOMEvent into members list
of jshint.js.

Oops.
Merge branch 'master' of git://github.com/TheJosh/jshint into internal

Merging this patch with one change (aside from conflict resolution): no
more formal parameter to define a scope. The scope is now defined with
a value option 'scope'. This option is undocumented and will possibly go
away in Next. Still better than another formal parameter that we can't
easily take away.

Conflicts:
	jshint.js
Don't warn about uncapitalized global functions used as constructors.

This prevents JSHint from warning about the following case:

    var myFunc = function () {};
    var obj = new myFunc();

There is not much harm in calling a normal function with 'new'.
Make NaN a built-in global and not a reserved word.

NaN is not a reserved word according to the ES5 spec and treating it
like one prohibits the use of (equally valid) Number.NaN.

Relevant:

  * List of ES5 reserved words: http://es5.github.com/#x7.6.1
  * Closes GH-286
Don't warn when Object is used as a function.

Like Boolean, Number, and String, Object can be called as a function,
which provides scripts with access to ECMAScript's internal ToObject
logic. If passed an object, return it. If passed a primitive, return
a new Number, Boolean, or String as appropriate (or new Object for
null/undefined). This is useful primarily when implementing shims for
new ECMAScript functionality that is specified to use the ToObject
internal method.

Closes GH-392.