cache: Disallow resizing of cache related LVs

For now, disallow lvextend/lvreduce/lvresize of cache LVs, cache
pool LVs, and cache pool sub-LVs.
test: Add cache[pool] support to lv_tree_devices_ test suite function.
pvmove: Disallow pvmove of cache LVs

Skip over LVs that have a cache LV in their tree of LV dependencies
when performing a pvmove.

This means that users cannot move a cache pool or a cache LV's origin -
even when that cache LV is used as part of another LV (e.g. a thin pool).

The new test (pvmove-cache-segtypes.sh) currently builds up various LV
stacks that incorporate cache LVs.  pvmove tests are then performed to
ensure that cache related LVs are /not/ moved.  Once pvmove is enabled
for cache, those tests will switch to ensuring that the LVs /are/
moved.
libdm: internal is_selinux_enabled wrapper

There is no point to call this external function more then once.
(As suggested by selinux developer)
libdm: drop unneded assignment
libdm: call preload callback only when success

Do not call node's preload callback, if there is
any failure during preload.
libdm: proper traversion of revert list

Deactivation of top level node has to happen,
before traversing subtree.

Swap list logic and rather append new nodes to the head
and then use normal iteration.

(in-release update)
libdm: hardening transaction_id validation

Improve testing of transation_id to not allow other difference
then either kernel TID is equal or is lower by oned and there
are queued messages for transaction.

Mark messages as submitted if the transaction_id is already matching.

Do not try to deactivate node on failure here and leave it on
proper error path of the caller.
libdm: enhance thin transaction_id validation

Reuse _node_send_messages for just checking
for valid transaction_id with preload.

This allows earlier detection of incosistent thin pool.

Code does the same thing, except for sending messages.
metadata: move vg parsing to vg_write

Parsing vg structure during  supend/commit/resume may require a lot of
memory - so move this into vg_write.

FIXME: there are now multiple cache layers which our doing some thing
multiple times at different levels. Moreover there is now different
caching path with and without lvmetad - this should be unified
and both path should use same mechanism.
thin: cleanup target_present call

Mark 'seg' as unused attribute.
Pass seg as NULL (as it is unused) in this function.
raid: use feature attributes for raid10

Test raid10 availability as a target feature (instead of doing
it in all the places where raid10 should be checked).

TODO: activation needs runtime validation - so metadata with raid10
are skipped from activation in user-friendly way in lvm2.
mirror: detect attrs just once

Reorder detection of cmirrord. Now if cmirrord is not
running, target will not try to load kernel log module,
for communication with cmirrord.

Whole check for attrs now also happens just once.
cleanup: reorder commonly available devs in system to the front

Just shorting strcmp....
cleanup: spelling
cleanup: extend struct init usage
cleanup: indent, drop unneeded braces
tests: drop mirror from filter
tests: add some quotes

Use quotes for DM_DEV_DIR
tests: enhance thin test

Add more tests to also check validaty of transaction_id
and also detect we are not leaving active unusable thin pool LVs.