Improve error handling in zfshadow.sh

Now the zfshadow.sh script will detect and handle if a previous iteration
left a delta snapshot around. If it did, it will try up to 6 times to
clean the snapshots before continuing.

This commit also improves logging, particularly around the preserving the
output of commands that get run.