It kinda works now

Lots of stuff added, should have split this into smaller commits..
It kinda works now, as long there is no irregularities when running the
zfs send/recieve.
Very limited error checking so far, so it does not know whether or not
the sync was successful.
It does not handle broken snapshot pipes or any irregularity that can
cause the sync to fail.
It will also halt if a ping or SSH test fails.. this should be changed
to wait/retry instead.