Just reset the freenas:state for the last snapshot sent.

In theory freenas sends all snapshots incrementally, thus all snapshots
will have that flag reset, no need for recursive removal. That was too
slow in our setup.

(cherry picked from commit 594c0af658afc1370d4dd2f04a37fbeac09a8463)
Cleaner log message if replication failed

(cherry picked from commit 741df53850ed5092f4c3285466fa14cba19b8070)
Fix for #2345 which stops replication starting if no overlapping snapshot task

(cherry picked from commit 865db029e2bb7e6dd69de01ff55a7e5a329012ca)
Make use of dataset holds.  For now take a less intrusive approach
and keep the existing freenas:state.

(cherry picked from commit c949e032e4e62fa66eaed03f16f8c2e405052bd3)
Clear holds when deleting replication task.

(cherry picked from commit adf1bfbcc7b39f0eedfc65bee8388738ecab80ab)
Don't blindly trust empty remote output when ssh have non-zero
return code.

Ticket: #5213
(cherry picked from commit 308ae393aefc6db07440b21cd7196c18e9f635ec)