lvconvert: Forward --splitmirror to a cache origin when applicable.
test: Show an activation bug in lvcreate of a cache over raid.
lvcreate: refactor code

Over the time lvcreate code has accumulated various hacks.
So try to move that code in right places.

Detect all types early in _lvcreate_params() so functions like
_read_size_params() do not need to change volume types.

Also ultimately respect give volume --type, that its shortcut
(-T, H, -m, -s) and after that options which do type estimation.
(i.e. --cachepool, --thinpool)

Avoid repeative tests - if we know all types are decode at once
place we can 'optimize' number of validations.
thin: lvcreate improve check of thin params

Use arg_from_list_is_set()
Resolve pool_lv at one single place.
Replace use of find_lv_in_vg() with find_lv().
thin: better thin snapshot error detection

While creating thin snapshot, we cannot use size argument.
commands: support shortcut -H for cache objects

Introduce cache_long_ARG for those instancies
where --cache is not related to caching LV.
(pvchange,vg|lv|pvscan).

cache_ARG is now with -H shortcut.
lvcreate: support --cache and --cachepool

Enable in cmdline options for cache and cachepool.
toollib: validate also name

In validate_lvname_param() call also validate_name().
lvconvert: options splitcache, split, uncache

  --splitcache
  Splits only cached LV (also pool could be specified).
  Detaches cachepool from cached LV.

  --split
  Should be univerzal command to split various complex targets.
  At this moment it knows cache.

  --uncache
  Opposite command to --cache. Detaches and DELETES cachepool for
  cached LV.

Note: we support thin pool cached metadata device for uncaching.
Also use may specify wither cached LV or association cachepool device
to request split of cache.
cache: add validate_lv_cache_create

Move validation tests into separate function.
lvconvert: reuse cache validation

Validation is now already in
validate_lv_cache_create() so reuse it.

Also properly rename var origin -> origin_lv.
lv_manip: fix out of order backup

We had only 2 remaining places that were leaving unbackuped metadata.
lvcreate: reuse validation of names

Use validate_lvname_param() for name validation.
pools: move removal of _pmspare

Since _pmspare is internal volume move it to
lv_remove_single -  so it's automatically removed with
last remove thin-pool.

lv_remove_with_dependencies() is not always used for pool removal.
cache: lvremoved cached LV removes cache pool

When we remove cached volume, whole tree must go down.
There is  'lvconvert --splitcache' to preserve cache pool.
cache: check activation of volume activated

volume_list may silently skip activation which is then still reported as
success.
lvremove: detect cluster wide active state

If the LV is active remotely do not skip question for deactivation.
cache: improve creation code

Move code to better locations.
Improve test and remove invalid ones
(i.e. no reason to require cache size to be >= then origin).

Correctly comment where the code is doing actual conversion
of other existing volume - we do already a similar thing with
external origins.

Lots of new command line options and combinations is now supported.
Hopefully older syntax still works as well.

lvcreate --cache --cachepool vg/pool  -l1
lvcreate --type cache --cachepool vg/pool  -l1
lvcreate --type cache-pool vg/pool  -l1
lvcreate --type cache-pool --name pool vg  -l1
... and many many more ...
cache: use same alg for cache size calc

Use the same algorithm for cache metadata size as the cache tool is using.
lvconvert: validate cache conversion to snapshot

Cache cannot be converted into snapshot cow nor origin.