AU: Don't send no-op operations in the delta payload.

This reduces the payload a bit and also speeds up updates on the client by
reducing the I/O.

This CL also removes a somewhat broken check for written blocks. It seems that
the intent of the check was to make sure each block is updated with some data
but since some file data blocks may be used as scratch the check is somewhat
meaningless. The CL removes the check because some blocks may never be written
if they were a part of a no-op operation.

BUG=7543
TEST=unit tests, generated a no-op delta an installed on the device

Change-Id: I31f388651a45d10dd931389a6c80ac18cb10f466

Review URL: http://codereview.chromium.org/3785008
diff --git a/delta_performer.cc b/delta_performer.cc
index 5bb5d0a..134316e 100644
--- a/delta_performer.cc
+++ b/delta_performer.cc
@@ -119,10 +119,10 @@
   if (op.src_extents_size() == 0) {
     return true;
   }
-  // TODO(adlr): detect other types of idempotent operations. For example,
-  // a MOVE may move a block onto itself.
-
-  // When in doubt, it's safe to declare an op non-idempotent.
+  // When in doubt, it's safe to declare an op non-idempotent. Note that we
+  // could detect other types of idempotent operations here such as a MOVE that
+  // moves blocks onto themselves. However, we rely on the server to not send
+  // such operations at all.
   ExtentRanges src_ranges;
   src_ranges.AddRepeatedExtents(op.src_extents());
   const uint64_t block_count = src_ranges.blocks();