DuckPAN: store and parse module list once.

Rather than redownloading a couple (or more) times in a row and
re-parsing, just parse it once per run.

- Eliminates duckpan_packages as an option, but that seemed silly.
- File is mirrored instead of gotten and stored, may make things very
  slightly faster on slow connections.
- File is parsed just once per application run.
DuckPAN: make reinstall do reinstall.

force is much more dangerous, ignoring test results and the whole
ordeal.  This should reinstall if it's possible.
Perl: simplify module version checking.

This makes things slightly easier to follow for the next person.  I
suspect I'll be back here soon and I like my sanity.
Perl: make pinned versions work.

We don't have access to an export which allows us to find previous
distributions, but we can assert a bunch of shaky premises and try to
find it anyway.
Perl: allow pinning for uninstalled packages.

We've always required that we have a local version against which we
compare.  But if it's not installed at all, we'd miss the comparisons
with the pinned version.  So, let's give it a value against which to
compare.

Hopefully that value is silly enough.
DuckPAN: use a more reasonable terminal width for `print_text`.

If we can figure out their width, we might as well use it so we get a
nicer output.

I don't feel comfortable writing cross-platform code to determine when
the width may have changed, so I'll leave that for smarter people.
Merge pull request #162 from duckduckgo/mwm/faster_duckpan

DuckPAN: store and parse module list once.