Made compatible with Python 2.6, required for e.g. RHEL/CentOS 6

Since subprocess.check_output is not available on Python 2.6,
we detect this, and provide an own implementation (lifted from
the official Python sources).
Added option to select ssh cipher; hard-coded selection of arcfour removed

The arcfour cipher has dubious security, and on some systems,
e.g. any which implement CISecurity recommendations, is disabled
in ssh_config.

For the previous behaviour, simply use zreplicate --ssh-cipher=arcfour
Add support for zsnap --keep=0, for deleting snapshots
Added --nosnapshot option to zsnap, to inhibit new snapshots

Noting that zsnap -k is a useful way to remove old snapshots,
there are scenarios when one wants to do that without creating
a new snapshot, hence this option.
Added zbackup script, for property driven ZFS backup, using zsnap/zreplicate
Added --create-destination option for zreplicate, and use this in zbackup
Pass verbose and dryrun through from zbackup to zreplicate
Option to inhibit use of -R by zreplicate in zfs send, used by zbackup

I suspect use of zfs send -R is just a mistake (confusion between recursive
and replication-stream).  This option allows to inhibit it.  In future, it
might be best removed.
Fixed bug in my last update to zreplicate, --no-replication-stream option
replica property for zbackup can be list of destinations
Added *tier*-snapshot-limit property, for reaping snapshots on destination replica.
Fixed bug with missing snapshot-limit property inhibiting snapshots
Reverted addition of --no-replication-stream option to inhibit -R in zfs send

(This idea was a mistake, -R really is needed, sorry.)
Fixed zsnap dryrun in presence of --nosnapshot
Changed snapshot reaping to use received properties, not *-snapshot-limit

This addresses the problem of reaping snapshots on the destination
replica.  Previously I tried to do this by not replicating properties
(avoiding zfs send -R), and introducing a new property per tier,
*tier*-snapshot-limit.  This was a mistake.  So having embraced the
fact that properties will in fact be replicated, we detect this on the
destination, as the source is received.  For such properties, no new
snapshots or replication is performed.  But old snapshots are reaped
anyway.  So running zbackup on a replica destination host simply
serves to cleanup old snapshots, safely.
Removed unsafe (for backup) use of zfs send -R.

The call to optimize_recursivize() in sync.py is commented out for now,
to be deleted later if this change proves satisfactory.

To purge snapshots on the destination replica, use zreplicate --clear-obsolete,
or drive this from ZFS properties with zbackup running locally on the
destination server.
Restored *tier*-snapshot-limit property.

Now that we're not using zfs send -R, properties do not get
replicated.  So there needs to be a way to configure snapshot reaping
on the destination replica.  This is it.
Default zreplicate behaviour restored.

The inhibiting of replication streams (zfs send -R) in zreplicate
which is required by zbackup is now handled via the
--no-replication-stream option.
Minor tidyup, replace print with verbose_stderr, etc.
zbackup: ignore *all* inherited properties

While it may be convenient to set the *-snapshot-limit properties just
once on a replica, and tidyup old snapshots via the inherited values,
this currently causes too many calls to zsnap, and is therefore
disabled for now.