Cover all paths for serving files + asynchronous

1. Cover all code paths when serving files
2. Make sure all read/writes are asynchronous
3. Make sure we clean up (delete) after we run grunt from command line.