dist.ini: update dependencies.

Add specific versions for all unversioned entries in dist.ini.  Also,
remve List::Util as, it has been in core since before our minimum
required version.

The version numbers are derived from a working installation, namely
mine.
Config: use tiny paths even from ENV vars.

- Remove MooX::HasEnv.
- Build Path::Tiny objects for the paths.
App::DuckPAN: explictly import first from List::Util.

Without this it may work, but we don'thave any reason so expect it will,
nor that we'll be able to easily interpret the resulting messages.
Merge pull request #155 from duckduckgo/mwm/config_updates

Config: make more reislient.
Server: deal better with changing page structure.

This is still far too tied to a particular page layout, but it won't die
now.

Fixes #151.  (With improvements to come)
Server: clean up file cache loading somewhat.

This makes a more straight-forward path through the code to understand
what is happening.

Also more commenting on the files themselves, to make it easier to
review in-browser.
Server: further refactor cachefile handling.

This is still not _exactly_ what I want, but we're getting closer.
Server: further streamline caching structure.

This allows for a much better experience when working on a slow link.

- Allow caching of everything (including perl module status and HTML
  pages) for 4 hours, by default.
- Provide an option to change the cache lifetime (-c=0 is more or less
  equivalent to -f)
- Store un-changed files in cache, updating them just before preparing
  to serve.
- Always read from cached file, which helps ensure they will be
  reusable, even when the force is on.

Still a problem: country.json
Server: still better caching information.

- Make it possible to recognize paritally downloaded files, exiting
  and removing them from the cache.
- Add Term::ProgressBar for download tracking.
- Replace die with exit_with_msg.
- Update exit_with_msg for better visual on multi-line messages.
Server: do not trust things external things in the dist-cache

Only copy over files without external soruces (notably duckpan.js, at
present)... everything else is either gotten fresh or cache-checked.

I don't even know how these managed to get distributed to me, but ah,
well.
Server: clean up output a bit.

Also:

- Remove now incorrect comment.
- Simplify the external/dist logic a bit.