Merge branch 'develop'
Promote DownloadError to enum for type-safety
Set 'reason' attribute when download was successful.
Updated .gitignore