Make async, capture std output from haxe and use lodash.

Fixes multiple issues:

### Make compilation truly asynchronous

When you register a grunt task, you have to call this.async() in order for grunt to know that it's an asynchronous task.  I noticed that when you ran the haxe task, it just ended with no errors regardless  of what the `haxe` command returned.  Now it waits until the haxe command is complete for it to exit.

### No errors captured from haxe command

I also noticed that even if you ran the grunt command, you wouldn't see any errors.  I used grunt.util.spawn and captured the output from the haxe command so if there were any, you would be able to see it in the console.

### Use lodash instead of grunt.util._

As of 0.4.2 [lodash will not be a bundled library for gruntjs](http://gruntjs.com/blog/2013-11-21-grunt-0.4.2-released), so I included lodash into the package.json and made it a requirement.