marsadm: allow calling multiple functions in phases

Add infrastructure for splitting commands in multiple phases.
Usually, phase0 will check for some preconditions, while
phase1 will execute the command. The final result will only
be committed if nothing fails.

The difference to the old behaviour will only show up when combined
with 'all' resources. If anything fails in phase0, nothing will be
touched in phase1. The old behaviour could touch some resources,
but omit others when something failed.

The new behaviour is more transactional-like.
marsadm: split command "primary" into phases
marsadm: fix primary detection

The actual-*/is-primary symlink may race with the appearance
of the device. Use both conditions to be sure.
marsadm: add new command 'wait-umount'
marsadm: add new commands 'wait-{cluster,resource}'
net: decrease trigger turnaround time
light: remove superfluous timeout parameter

The concept was broken.
infra: disallow forbidden brick states

Switch on only when all predecessor bricks are also on.
Failing to do so can result in fatal errors.
Similarly, switch only off if no successor exists any more.
infra: don't switch off if predecessors are working
infra: remove recursive button operations

All buttons should be switched step-by-step in future.
The previous patch should ensure that no harm can occur.
infra: remove superfluous parameter is_server
infra: replace brick_version by kill_round
light: fix detach operation
light: fix logfile replication when trans_logger is not running
marsadm: split {{at,de}tach,up,down} into phases
infra: systematics of make_brick_all() switching, remove superfluos parameter
marsadm: remove timestamp functions

Timestamps of symlinks are used for Lamport comparison
(any newer one overwrites any older one).

That concept should _not_ be used for any other comparison, since
there is no / not yet any "transactional" property of
bulk updates of symlinks (the Lamport condition treats each
symlink independently from any other).

Until such "transactions" are introduced at the strategy layer,
timestamp comparisons between _different_ symlinks are
unmeaningful in general.
marsadm: new commands {cat,show-{info,errors}}
marsadm: add global uuid to cluster
proc: add /proc/sys/mars/info