Introduce the concept of incomplete volumes.

Incomplete volumes are individual members of multiple-disk setups. They
are now exposed as read-only devices (to make sure the user doesn't
damage the data which is part of a multi-device layout) with a special
partition hint. This is done to aid the user in data recovery, but these
partitions are normally not mountable by any conventional means.
Add support for optional lv attribute 'allocation_policy'.

This is a string attribute known to be assigned when mirrored LVM
volumes are created without a dedicated device for a mirror log (the
mirror log is then located somewhere on these devices, and
allocation_policy describes the policy with which allocation/space
distribution was done).
Implement initial support for parsing mirrored LVM layouts.

LVM mirrors are of course not supported since this is a pure
partition-style LVM driver, but for recovery purposes we should at least
support loading such layouts and exposing the individual devices.

This commit makes a lot of changes:
- Heavily indented logic in lvm2_parse_device was broken out into static
  helper function lvm2_parse_device_find_pv_location.
- lvm2_stripe was renamed lvm2_pv_location since the same data format is
  used for data location descriptions for both stripes and mirrors.
- Some previously mandatory attributes in lvm2_segment was made optional
  and new ones were added to support mirrored layouts (all optional).
  This could be expressed with a union since it's unlikely that both
  stripes and mirrors will exist in a segment, but at the moment the two
  sets of variables are side-by-side.
lvm2_text.c: Print whole string in u64 parse error message.

This helps when debugging.
lvm2_text.c: Emit more helpful error messages after u64 parse errors.

After a u64 parse error was encountered, we would still struggle to find
exactly where this happened. This commit adds error printouts showing
the variable name of the data that was being parsed.
lvm2_text.c: Bugfix when parsing location pairs in segments.

The index into the elements array was incorrect.
lvm2_text.c: Make error messages more helpful in lvm2_parse_device.
lvm2_text.c: Formatting / cleanup.
lvm2_text.c: Add debug message in lvm2_parse_device.