child_process: improve spawn() argument handling code

This commit adds stricter argument type checking to `normalizeSpawnArguments()`. This commit also removes a number of extraneous checks in `spawn()`. Finally, there appears to be a regression in the handling of the optional `args` argument. This commit adds more thorough testing of `spawn()` arguments. This is related to the work done in #6068.