Bugs/fix predef object evaluation

This fixes an issue introduced by https://github.com/grunt/grunt-contrib-jshint/commit/fc7938f6c799f559dc3b1495c06d872228960239 where if `predef` is an array it's no longer evaluated correctly because:

````javascript
var a = ['a','b','c'];
a === Object(a); // true
Object.keys(a); // [0,1,2] (expects ['a','b','c'])
````

Instead using the object type check as documented in IdomaticJS (https://github.com/rwldrn/idiomatic.js/#type)

````javascript
var a = ['a','b','c'];
typeof options.predef === "object"; // false
````