Multiple fixes

1. Timeout issues fixed by proper asynchronous reading/writing of files
and cleaning up the temporary directory before use.
2. Ability to specify a temporary directory so that multiple grunt
instances can be run.
3. Properly returning 404 errors for any request that cannot be served
(fix for application ajax requests)
4. Better error reporting when saving grunt output to a file.