Added support for recursing directories of JS files in WSH env.
Added information on using directories to the usage text.
Reformatted some lines that were over 100 characters long
Internally mutating the option argument causes unexpected behaviour.

Example:

    var options = {regexp: true};
    JSHINT("/*jshint regexp: false */\nvar c = /a.b/;", options);
    JSHINT("var a = /d.e/;", options);

In the second call, `options.regexp == false`, and no errors are logged.
Merge pull request #497 from brentlintner/copy.option.object

Internally mutating the option argument causes unexpected behaviour.
Use only modeline options when checking JSHint files in tests.
Make jshint-rhino.js runnable

Add a shebang to jshint-rhino.js to tell the shell how to execute the
file and mark it executable after build.

Note1:  Ignore the return code of chmod in case the user is on a
filesystem which does not support setting execute permission.
Note2:  Make use  of /usr/bin/env to catch rhino anywhere in the PATH.

Also reformat the rhino build target slightly to match the other targets
(replace chained '&&' with separate shell commands).  Combine multiple
invocations of cat into one.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Merge GH-509

As a convenience to users, it would be nice if `jshint-rhino.js` were directly runnable rather than requiring the user to invoke rhino and pass the script as an argument for every use of JSHint.  To that end, these commits add a shebang line and mark `jshint-rhino.js` executable during build.

+ Fixes GH-509

* patch-509:
  Make jshint-rhino.js runnable
Support compatibility with inverted JSLint options

Several of the options inherited from JSLint have retained their
original names but inverted their meanings.  Since the "/*jslint" option
syntax is still supported, running JSHint on a project using the
"/*jslint" option syntax with these options produces a result that is
opposite to the intentions of the developer.

To support this use case and increase compatibility with JSLint, invert
such option values when encountered with the "/*jslint" option syntax.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Add test for compatibility with inverted JSLint options

Create jslintInverted.js unit test which tests handling of the
"/*jslint" plusplus option.  If this is parsed the same as a "/*jshint"
option the test will fail.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Support compatibility with renamed JSLint options

Several of the options inherited from JSLint have retained their
original function but changed their names.  Since the "/*jslint" option
syntax is still supported, running JSHint on a project using the
"/*jslint" option syntax with these options has no effect and may either
result in errors the developer has already reviewed or miss errors that
have been specifically requested.

To support this use case and increase compatibility with JSLint, catch
such renamed options and store the values with the corresponding JSHint
option when encountered with the "/*jslint" option syntax.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Add test for compatibility with renamed JSLint options

Create jslintRenamed.js unit test which tests handling of the
"/*jslint" eqeq option.  If the option name is not converted from "eqeq"
to "eqeqeq" and the value inverted, the test will fail.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Merge GH-508

Although JSHint currently recognizes the `/*jslint` option comment syntax,
several of the options have either changed names or inverted meanings
between JSLint and JSHint.  This creates many needless errors when running
JSHint against a project using the JSLint option comments.
To increase compatibility and ease transitions from JSLint to JSHint,
these patches translate JSLint options into JSHint options where possible
and unambiguous.

+ Fixes GH-508

* patch-508:
  Add test for compatibility with renamed JSLint options
  Support compatibility with renamed JSLint options
  Add test for compatibility with inverted JSLint options
  Support compatibility with inverted JSLint options
Added (hidden) r2config
Patch from J-Griffin

Added recursive directory support to WSH wrapper.

The WSH env now has support for passing in a directory name.

The only functional change that was made for single files is that the
passed script name is spit out in the output just like when running
against a directory. Let me know if that is a problem and I can make a
change.

+ Fixes GH-471

* (merged manually)
Rhino: convert indent into a number.

This patch fixes a bug when values of option indent were being
passed into JSHINT as strings instead of numbers.

Fixes GH-495.
Allow space afters tabs and before a block comment [closes #503].
Added node_modules to .gitignore
Don't show unnecessary warnings for new my.Array()

There is no need in showing "Use the _ literal notation." warning
when Array is simply a property of some custom object. Same with
Object.

Fixes GH-527.
Do not assume advance "end" if next token is ".". Fixes #334

Signed-off-by: Rick Waldron <waldron.rick@gmail.com>