Download estimator uses metadata

Ready for review.

I think (hope) the commits should each be quite clear. So if you go through them in order it shouldn't be too difficult to see what is going on. And feel free to ask if there's something that you don't understand.
How will this behave (or misbehave) if we have a bug in the code and the subclass didn't implement it?

Obviously for a developer it'd be good to know that, but it might jam the user from not doing what he wants. I would recommend to just return `false`. No biggie if there's no download estimate I think...