Revisit JSHint settings

This is a first pass at revising our jshint options.

### Removed default options

These were all set to their default values, so it was kind of noisy to keep them around.

[node](http://jshint.com/docs/options/#node)
[rhino](http://jshint.com/docs/options/#rhino)
[couch](http://jshint.com/docs/options/#couch)
[wsh](http://jshint.com/docs/options/#wsh)
[prototypejs](http://jshint.com/docs/options/#prototypejs)
[mootools](http://jshint.com/docs/options/#mootools)
[dojo](http://jshint.com/docs/options/#dojo)
[debug](http://jshint.com/docs/options/#debug)
[devel](http://jshint.com/docs/options/#devel)
[strict](http://jshint.com/docs/options/#strict)
[globalstrict](http://jshint.com/docs/options/#globalstrict)
[asi](http://jshint.com/docs/options/#asi)
[laxbreak](http://jshint.com/docs/options/#laxbreak)
[boss](http://jshint.com/docs/options/#boss)
[evil](http://jshint.com/docs/options/#evil)
[expr](http://jshint.com/docs/options/#expr)
[loopfunc](http://jshint.com/docs/options/#loopfunc)
[shadow](http://jshint.com/docs/options/#shadow)
[supernew](http://jshint.com/docs/options/#supernew)
[plusplus](http://jshint.com/docs/options/#plusplus)
[sub](http://jshint.com/docs/options/#sub)

### Removed options that were deprecated

These options have been removed from JSHint, so keeping them in our `.jshintrc` does not make sense.

```
passfail
regexp
regexdash
nomen
onevar
trailing
white
```

### Removed options

These options were previously set, but are being removed in favor of the default value.

[`maxerr`](http://jshint.com/docs/options/#maxerr)

Was set to 100. The default of 50 should be sufficient.

[`bitwise`](http://jshint.com/docs/options/#bitwise)

Was set to disallow bitwise operators. They are now allowed.

[`scripturl`](http://jshint.com/docs/options/#scripturl)

Was set to allow `javascript:` urls. They are now disallowed.

[`noempty`](http://jshint.com/docs/options/#noempty)

Was set to disallow empty blocks such as `if (a) {}`. They are now allowed to make commenting out the contents of an else block not break jshint.

[`nonew`](http://jshint.com/docs/options/#nonew)

Was set to allow `new Blah()` without assigning it to a variable. They are now disallowed.

### Changed options

These options were set, but are being changed to something else.

[`jquery`](http://jshint.com/docs/options/#jquery) (from false to true)

This option adds jQuery and $ to the known globals. Setting `jquery:false` and `globals:jquery:true` is a contradiction, and this is a shorter way to get the behavior we already have.

[`eqnull`](http://jshint.com/docs/options/#eqnull) (from false to true)

This will now allow `a == null` or `a != null` to check if `a` is either null or undefined.

[`forin`](http://jshint.com/docs/options/#forin) (from false to true)

This requires `for (a in b)` to use `if (b.hasOwnProperty(a))` inside loops. `Object.keys(b)` should probably be used instead of `for (a in b)` in most cases anyway.

[`latedef`](http://jshint.com/docs/options/#latedef) (from true to "nofunc")

This allows functions to be called before they are declared, but does not allow variables to be used before they are declared.

```js
a();   // OK
b = 1; // Not OK
var b;
function a(){}
```

[`unused`](http://jshint.com/docs/options/#sub) (from false to "vars")

This will warn if there are unused variables. Using `"vars"` instead of `true` means it will only apply to vars, not function parameters.

### Added options

These options were not set and are being added.

[`camelcase`](http://jshint.com/docs/options/#camelcase)

This requires that properties and variables are `camelCased` rather than `stepped_on_a_snake_cased`.

[`maxcomplexity`](http://jshint.com/docs/options/#maxcomplexity) = 10

This option lets you control cyclomatic complexity throughout your code. Cyclomatic complexity measures the number of linearly independent paths through a program's source code. Read more about [cyclomatic complexity on Wikipedia](http://en.wikipedia.org/wiki/Cyclomatic_complexity).

[`maxdepth`](http://jshint.com/docs/options/#maxdepth) = 3

This option lets you control how nested do you want your blocks to be.

[`maxparams`](http://jshint.com/docs/options/#maxparams) = 3

This option lets you set the max number of formal parameters allowed per function.

[`maxstatements`](http://jshint.com/docs/options/#maxstatements) = 10

This option lets you set the max number of statements allowed per function.

[`nonbsp`](http://jshint.com/docs/options/#nonbsp)

This option warns about "non-breaking whitespace" characters.

[`quotmark`](http://jshint.com/docs/options/#quotmark) = "single"

This option enforces that all strings use single quotes.