Fix to common race condition + other minor cleanup

The race condition is highly likely to appear if you are running the plugin on 5+ Coffee files (i.e. very small number of files to cause it to surface). Solution is to use Q library to only call the Grunt async done() function after *all* the internal async tasks are done.