Handle multiple and expanded sources properly

`done` should only be called once, but was called multiple times if either:
- The `src` option was set to an array of files.
- The `expand` option was enabled and that expanded to more than one file.

This would break future async grunt tasks. The destination would also be set to the same filename for all elements in `src` arrays, which is fixed in this branch too.