Moved Distro_impls.Cache into its own file

Also, tidied up the interface:

- Format and revision options are gone. If the format changes, just use
  a new file. Bumped the file version for all caches so we can use a
  single consistent format for all of them. Entries always now use tabs
  (so we don't have to worry about names containing = characters).

- All internal methods are hidden.

- regenerate_cache now asks callers to submit entries, rather than
  just handing over the raw output cannel.