Tidying up - add cached builder.db.get_checkout_vcs

This should make it quicker to retrieve the VCS for a checkout
when we do it many times, plus it handles checking it is a checkout
label, etc.

Conflicts:
	muddled/commands.py
	muddled/depend.py
	muddled/version_control.py
	tests/test_lifecycle_git.py

resolved by hand.
Fix missing import
Start trying to simplify a little bit

'vcs_handler' should really just be vcs, for a start...
Remember the checkout VCS independently

Add db.set_checkout_vcs and use it in version_control.py

This is duplication of information for the moment, but won't be later.

Also, at the same time, move to using depend.normalise_checkout_label
everywhere, instead of the two other versions of (more or less) the
same code
Make VersionControlHandler much smaller/simpler

and consequently change all uses of it, including the Checkout action.o

Much more stuff is now stored in builder.db, and there is now also
a "muddle query checkout-vcs".

Oh, and "muddle help vcs" is a little bit more helpful, too.o

Also, finally removed conventional_repo_url from version_repository.py,
since it was too difficult to make it carry on working.
Use builder.db.get_checkout_path() directly

(but keep builder.checkout_path() for use by users, consistent
with other path-getting methods of builder)
Tidy use of builder.db.get_checkout_location
Partway through changing to a single checkout_data

That is, a conglomerate object inside db.py, with a single
dictionary instead of many, which seems/feels more sensible

Checked in at end of day, currently not working.
Tests now pass.
Minor tweaks
parasitic.py is not, I believe, needed

(and, moreove, is not finished)
After application of pylint -E

basically to everything in sight.

Tests now all pass again.
Merge branch 'master' into checkout-object
Improve detection of installed packages

The previous mechanism failed when the package name
got truncated by "dpkg-query -l", for instance:

  $ dpkg-query -l libreadline-dev
  Desired=Unknown/Install/Remove/Purge/Hold
  | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
  |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
  ||/ Name           Version      Architecture Description
  +++-==============-============-============-=================================
  ii  libreadline-de 6.2-9        amd64        GNU readline and history librarie

where libreadline-de is not the same as libreadline-dev (!)
Begin working on a test for CPIO files

Before I can investigate whether it is possible to adapt the CPIO
support to generate CPIO files as part of the package install step,
I need some tests for normal use of the mechanism, in deployment.

This is the beginnings of that - it's not working yet(!)
So this is now a test for how CPIO deployment works

(as it workds at the moment)
Now with a failing test for what we want to work
Look, it appears to be working

well, for some value of "working" which is at least vaguely plausible.
Show using subdir destination, make executable

Demonstrate that the CPIO file can be created in a subdirectory,
which is important in the package case, as different "deployments"
can write CPIO files to different directories in obj directories
if wished.
Remove some redundant code