Ensure semaphore released when exception thrown.
Only emit download progress events when change >= 1%.
Obfuscate password when writing to log.
Fix mis-count of successful songs as Futures.successfulAsList() returns null objects for failed items.
Wrap delete and download tasks in container tasks.
Update logger to use new APIs, and rename SyncTaskEvent.
Release v1.5.0