(#19875) Package descriptions obtained by rpm/dpkg providers

Previously Puppet::Provider::Package::Rpm and Dpkg implementations
obtained package information from the system without capturing package
description information.

This change modifies the rpm and dpkg-query format strings to include
descriptions.  This can be used for querying package state on a node.

The rpm implementation is a simple change relying on a SUMMARY field
which is a single line and which does not change the one line per
package parsing structure in the Rpm class.

The dpkg implementation is a more complicated change because we are
using a DESCRIPTION field in dpkg-query's format string, which is a
multi-line value.  The first line is a summary, and is all we want, but
dpkg-query then print's x additional lines of long description.  A new
parse_multi_line method has been added to treat these multi-line results
as a single entry, grab the first line with summary and ignore the
excess lines without triggering warnings.  Completely invalid package
entry results should still trigger warnings.

Current dpkg-query versions (as of 1.16.2 from 2012, I believe) have a
binary:Summary field which would return this to a single line parse and
make it simpler and less error prone again.  But earlier Debian/Ubuntu
installations don't have this (Ubuntu 12.04 for instance).

Dpkg.instance, Dpkg#query both used a Dpkg.dpkgquery_piped to expose an
IO pipe for parsing.  Regex match used in Rpm to ensure we only consume
good query output lines.
Merge branch '19875-package-descriptions-feature'

* 19875-package-descriptions-feature:
  (#19875) Package descriptions obtained by rpm/dpkg providers