fixes #1608: integrate eslint into testing process

This generates the following warnings, but all errors (and tons of other warnings) have been eliminated.

```
underscore.js
    41:37  warning  A constructor name should start with an uppercase letter         new-cap
   361:17  warning  Gratuitous parentheses around expression                         no-extra-parens
   930:12  warning  Expected '!==' and instead saw '!='                              eqeqeq
   930:28  warning  Expected '!==' and instead saw '!='                              eqeqeq
   932:15  warning  Expected '===' and instead saw '=='                              eqeqeq
   932:24  warning  Expected '===' and instead saw '=='                              eqeqeq
   932:41  warning  Expected '===' and instead saw '=='                              eqeqeq
  1049:2   warning  Unexpected constant condition                                    no-constant-condition
  1234:26  warning  This function has too many parameters (5). Maximum allowed is 4  max-params
  1259:19  warning  The Function constructor is eval                                 no-new-func
```

The next version of eslint (current master) will allow comments for line-based exceptions so we can mark all of these as expected.

Fixes #1608.