Swap images/.gitkeep with a new .gitignore
Use more concurrent stuff + ease of life goodies

General quality of life improvements, including:

 - Retry downloads up to 3 times

 - Configurable (hardcoded) number of gothreads running at any point

 - Doesn't download an image you've already got

 - Better error messages all around
Add some command line params, separate main func