Rebuild only files that changed

This uses naive technique (comparing modification times) to select files for recompilation, so if you start with a clean repository and issue `grunt build` twice, then after second run you should get:
```
Running "coffee:compile" (coffee) task

Running "coffee:test" (coffee) task

Running "coffee:demo" (coffee) task

Running "less:development" (less) task
>> Destination not written because no source files were provided.

Running "copy:template" (copy) task
Copied 5 files

Running "copy:test" (copy) task
Copied 1 files

Running "copy:demo" (copy) task
Copied 13 files

Running "copy:vendor" (copy) task
Copied 2 files

Running "eco:app" (eco) task

Done, without errors.
```
As a side effect, there is no need anymore for custom watch task.

This PR includes a few related (and one unrelated - I can move this to another pull request) fixes/improvements.