Miscellaneous fixes

Hi,

I need to make some changes to the download strategies in Homebrew in order to make implementing some new features possible. The strategy classes have evolved a fairly unconstrained API over the years, so as you can imagine, knowing what is safe to change is difficult.

To that end, I am trying to get a feel for how these classes are being used outside of Homebrew core, and hopefully I am able to point out where things can be done in a different/simpler way.

I will leave some comments in the diff explaining the changes.

Thanks!
Here I've added `.gem` to the cached filename. Previously `clear_cache` did not do anything, because `cached_location.exist?` was always false.