use merge so empty objects don't kill settings

Switched from [extend](http://lodash.com/docs#assign) to [merge](http://lodash.com/docs#merge) so that a config file can have defaults and the passed in `config` variable can overright any defaults without requring every property to be set.

Hypothetical pseudocode example:

jshint.json:
```
jshint: {
   // all these settings
}
```

and

`config` option
```
{
  jshint: {
    // i just want to overwrite one option, not replace the whole object.
  }
}
```