Implement CacheDB for source packages in apt-ftparchive
add test for binary cachedb and contents generation
refactor to make OpenFile/OpenDebFile more robust
ensure clean works
refactor _InitQuery()
ensure "--db" also works with the new srcpkgdb
Only do openpty() if both stdin/stdout are terminals

Closes: 746434
Revert "add bash completion for the "apt" command"

This reverts commit 697c9314c8ba24f3e393b5de11a3fad7adae4bfc.

Conflicts:
	debian/rules
prepare release 1.0.3
Merge remote-tracking branch 'donkult/debian/sid' into debian/sid
Merge remote-tracking branch 'mvo/feature/apt-ftparchive-srccache2' into debian/sid
show progress in run-tests
fix regression from commit 215b0faf
Merge remote-tracking branch 'mvo/feature/apt-ftparchive-srccache2' into debian/sid
Never parse Version/Architecture tags in a Translation-$lang file

Version/Architecture information in a Translation-$lang file is
not allowed, so don't try to parse it. This is a fix for a bugreport
where a Translation-en file contained the content of the regular
Packages file (probably due to local FS corruption). This lead to
strange error messages on file download.

Thanks to Thomas Reusch for the report.
add an additional test for arch specific conflicts

In bugreport #747261 I confirmed with this testcase that apt actually
supports the requested architecture-specific conflicts already since
2012 with commit cef094c2ec8214b2783a2ac3aa70cf835381eae1.

The old test only does simulations which are handy to check apt,
this one builds 'real' packages to see if dpkg agrees with us.

Git-Dch: Ignore
make test independent from the actual Install-Size

Git-Dch: Ignore
mark as Automatic/Downloadable pure as gcc suggests

Git-Dch: Ignore
Reported-By: gcc
consistently fail if Smart* packagemanager actions fail

These failure conditions come with an error message attached and the
conditions aren't workaroundable (otherwise this would have been done
instead of returning failure), so not erroring out here means that we
execute dpkg later on with a known not-working ordering adding insult
(our own error messages at the end) to injury (dpkg failure).
fix tight loop detection and temporary removes

As outlined in #748355 apt segfaulted if it encountered a loop between a
package pre-depending on a package conflicting with the previous as it
ended up in an endless loop trying to unpack 'the other package'.

In this specific case as an essential package is involved a lot of force
needs to be applied, but can also be caused by 'normal' tight loops and
highlights a problem in how we handle breaks which we want to avoid.

The fix comes in multiple entangled changes:
1. All Smart* calls are guarded with loop detection. Some already had it,
   some had parts of it, some did it incorrect, and some didn't even try.
2. temporary removes to avoid a loop (which is done if a loop is
   detected) prevent the unpack of this looping package (we tried to unpack
   it to avoid the conflict/breaks, but due to a loop we couldn't, so we
   remove/deconfigure it instead which means we can't unpack it now)
3. handle conflicts and breaks very similar instead of duplicating most
   of the code. The only remaining difference is, as it should:
   deconfigure is enough for breaks, for conflicts we need the big hammer