Rework the caching mechanism (see below).

- Modularize the cache into a trait that can be used to implement
  caching of other, non-internet, things.

- Make the web cache set for 304 Not Modified and set an appropriate
  If-Modified-Since.
  - This doesn't work for Packages icons yet, this is an FI issue that
    I need to look into.

- Make it only check for 304 if we haven't downloaded an asset within 12
  hours. This is configurable when you create an instance of
  BitmapCache, which we currently only do in Cache.scala.