do_download(): more feedback messages

...and don't use 'url' varname, it's misleading because it's actually a
path fragment. (not sure that 'path' is much better though. would still
like a better name)
do_download(): use get_info dict for parms
md5(): major rewrite. use get_info, return True or False
md5(): If passed a list it only processes first item.
partial fix for #14, overwrite corrupt files in local cacheDir