This makes it easier to handle common exceptions. I was motivated because the Mesa URL is currently broken and wasn't handled well. Implementation mostly copied from here: http://stackoverflow.com/questions/22676/how-do-i-download-a-file-over-http-using-python