devicelibs.lvm: fix pvmove(src, dest=DESTPATH)

args.extend(str) will treat the str as iterable and append each
individual character to args; should be args.append(str).
devicelibs.lvm: refactor _getConfigArgs()/lvm()

Every place in devicelibs.lvm that executes lvm uses _getConfigArgs()[1] to
help build the argument list. So it'd be cleaner and simpler if we made
every call to the lvm binary go through lvm(), and then just called
_getConfigArgs() from there.

This also means we can pass the caller-requested lvm command+arguments to
_getConfigArgs(), so it can examine them and add appropriate config options
for us.

For example: right now the caller has to explicitly request
read_only_locking if it wants read-only locks. The current code does that
for every call to the informational commands (lvs, pvs, vgs, etc.).

This change moves that logic into _getConfigArgs(), which now just
automatically does read-only locking whenever we call one of the info
commands. Much simpler!

[1] except thinsnapshotcreate(), but that was an oversight (which is
therefore fixed by this commit)
lvm_test: refactoring + minor fix

Factor out a LVMAsRootTestCaseBase so we can more easily add new
functional test cases.

Also fix a buglet in tearDown where a failed pvremove() could make us
exit the loop without finishing.
Add attribute 'flags.lvm_metadata_backup'

This adds a flag which - if set to False - will suppress the automatic
backup of LVM metadata by adding the appropriate configuration options
(backup.backup=0 and backup.archive=0) to all invocations of LVM.

It also adds a test case to ensure this actually works.
Disable LVM autobackup when doing image installs (#1066004)

If we're doing an image install, the host system doesn't really care
about the metadata for these volume groups - and if you do a lot of
image installs (say, on a build system) the archive/ directory is going
to grow without bound.

So: suppress the autobackup behavior during image installs to prevent
modifying things on the host.