fix apt list output for pkgs in dpkg ^rc state

Packages in the "deinstall ok config-file" have no candidate or
instaleld version. So they must be special cased in the apt list
generation.
Notice the user about "apt list -a" when only a single hit if found

If the user is using "apt list pattern" and there is only a single
hit, notice about "--all-versions" as this is what the user may
be interessted in
Merge remote-tracking branch 'mvo/bugfix/apt-list-rc-pkgs' into debian/sid
Merge remote-tracking branch 'mvo/feature/helpful-apt-list' into debian/sid

Conflicts:
	test/integration/test-apt-cli-list
compile with absolute paths to allow lcov use

Instructing gcc (or clang) to prepare for capturing coverage data is
easy: Just build with: CXXFLAGS=--coverage

The hard part is that our buildsystem uses relative paths and so
confuses the hell out of lcov as it assumes this way that all our *.cc
files are in the same directory… by changing to absolute paths in the
compile rules we solve this problem.

Still not perfect as it refers to build/include files for most headers
and our forking/threading code isn't properly captured, but good enough
to see red reports for now:

CXXFLAGS=--coverage make
make test
./test/integration/run-tests -q
lcov --no-external --directory . --capture --output-file apt.info
genhtml --output-directory ./coverage/ apt.info

Git-Dch: Ignore
force fancy progressbar redraw on window size change

We always reacted on the size change, but the bar is only redraw if the
precentage changes, which can take quiet a while in big upgrades, so
with a bit of refactoring we can now call for a redraw immediate to fix
this.

This refactor also helps in avoiding obscure pitfalls clangs static
analyser was complaining about (namely failure of ioctl resulting in
garbage values in the struct).
clear HitEof flag in FileFd::Seek

fseek and co do this to their eof-flags and it is more logic this way as
we will usually seek away from the end (e.g. to re-read the file).

The commit also improves the testcase further and adds a test for the
binary compressor codepath (as gz, bzip2 and xz are handled by
libraries) via the use of 'rev' as a 'compressor'.
use Google C++ Testing Framework for libapt tests

My commit 45df0ad2 from 26. Nov 2009 had a little remark:
"The commit also includes a very very simple testapp."
This was never intended to be permanent, but as usually…

The commit adds the needed make magic to compile gtest statically
as it is required and links it against a small runner. All previous
testcase binaries are reimplemented in gtest and combined in this
runner. While most code is a 1:1 translation some had to be rewritten
like compareversion_test.cc, but the coverage remains the same.