* feat(cli): use a queue for duplicate and upload
Using a queue to process the files makes the file duplicate detection and asset upload more stable and tolerant of network errors. If an error occurs, the whole command will not stop; the task will be retried (3 times) before logging the error and moving to the next step.
The new queue abstraction is using [fastq](https://www.npmjs.com/package/fastq) internally.
* chore(cli): queue.push return promise which resolve with task
* test(cli): add spec for uploadFiles and checkForDuplicates