Feature/fix child process type checking

https://github.com/joyent/node/pull/8392 introduced a test that doesn't fail when the code it is testing is deleted.

Also, behaviour of execFile and spawn have drifted apart again, unnecessarily, I think. This brings them into line again.

/to @cjihrig  
Correct. The callback is not being allowed to bubble down. This'll need to be fixed, but more than just adding a check. The values need to be assigned in that specific case. e.g.:
```javascript
} else if (typeof arguments[1] === 'function') {
  callback = arguments[1];
  args = [];
} else if (arguments[1] && typeof arguments[1] !== 'object') {
```
Though this does leave the possibility of the user passing `0` to `arguments[1]` and still not throwing. Instead I'd use the following:
```javascript
} else if (arguments[1] && typeof arguments[1] === 'object') {
  args = [];
  options = util._extend(options, arguments[1]);
} else {
  throw new TypeError('Incorrect value of args option');
}
```