Use stream interfaces of child processes to log to stdout/stderr

The current implementation won't print to stdout/stderr until the child process has finished. This pull request uses the stream interface of the child process to print to stdout/stderr on the spot.

Right now it's not as clean as it could be due to how `grunt.util.spawn` works. If this [pull request](https://github.com/gruntjs/grunt/pull/699) gets merged, I'll clean up this change accordinly.