On iOS 9 when server returns a response with HTTP status 403 caused the
downloader to callback successfully and saving the error message to the
storage path. This commit adds a check on the HTTP status code and
do failure callback if status code is 4xx or 5xx.
Upon calling NSURLSessionDownloadTask's resume, the task's timeout
countdown starts. When the AssetManagerEx starts downloading, it creates
all the tasks all at once and just `resume` upon creation. When the
number of asset files is very large, later tasks tend to end up in
'request timed out -1001' error before they can even start downloading.
This commit adds a buffer queue to prevent all the NSURLSessionTasks to
start all at once.