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
Fixed failing regression test

We introduced a bunch of changes to how we handle mixed spaces and
tabs and those changes removed a few warnings that JSHint throws
for jQuery 1.7 source code.
Error on invalid JSHINT(...) input

This patch makes JSHint to return an error whenever you try to use
the function with an invalid first parameter. First parameter has
to be either a non-empty string or a non-empty array.

Closes GH-567.
Made the option names maxstatementsperfunction, maxnestedblockdepthperfunction, maxparametersperfunction and maxcyclomaticcomplexityperfunction shorter by removing the suffix 'perfunction'
Improvements for nomen and camelcase options.

I've decided to refactor our identifier checking code a bit and while
doing refactoring incorporated improvements for nomen and camelcase
options from GH-581 and GH-596:

 * nomen now recognizes underscore.js global (_)
 * camelcase now allows variables with leading underscores since it
   is one of the most common patterns for pseudo-private variables
   in JavaScript.

Thanks for Rod Vagg (rvagg) and Nikolay Frantsev (Shutnik) for their
patches.
Fix for unnecessary semicolon + white
Make exports writeable in Node.

Apparently in Node people do `exports = module.exports = foo();` so
we need to make exports global variable writeable in the Node
environment.

Closes GH-480.
Remove JSHINT.report

JSHINT.report is a weird, untested method that simply wraps
JSHINT.data into HTML. I don't think presentation is JSHINT's job
and I don't want to port it to Next so I thought I would just kill
it here.
Bug fix, give proper character count for supernew and return identifier
Don't extend String.prototype with non-standard methods.

Extending String.prototype is generally a not very wise idea
that leads to embarassing bugs such as GH-518. This patch
removes all instances of JSHint extending String.prototype
with non-standard methods and removes two of them completely
because they were not used.

Closes GH-518.
Merge pull request #598 from goatslacker/gh-xxx-2

Bug fix, give proper character count for supernew and return identifier
Don't default to rhino=true in the Rhino wrapper.

Defauling to the Rhino environment when Rhino is only used to run
JSHint is counter-intuitive and not aligned with other wrappers
such as Node.

Closes GH-507.