Consider splitting `_generateEstHtmlString` into two functions - one which is use when we have a valid size estimate, and another which is used when we don't have one. 

Reasons for doing this:
* what's actually displayed for each case is pretty different (i.e. with invalid value, we don't show `fileSizeEstimate`, `fileMagnitude` or `fileSizeImage` - just `downloadMessage`
* we can avoid having to pass in `-1` above as an error code (which is a bit unclean, IMHO)