Grunt should not explicitly exit

I removed any calls to process.exit().  I removed the util.exit module--it was a hack to enable to grunt to work with pipes, but it broke again with node 0.10.

__Summary of changes:__

The exit code and whether grunt was aborted are now stored.  If grunt is aborted, no more tasks will run, but the process will be allowed to end on its own.  There is a process.on('exit') handler that ensures that the proper exit code is used.