Block diffs

Move unblock recording into update-blocks, and add logic to do the same for blocks. Instead of recording blocks and unblocks directly from the stream, do it by diffing BlockBatches. This is more resilient to downtime. The streaming block/unblock events just trigger updateBlocks now.

Note: actions.template refers to causeUser, which does not yet exist. I will add that in a subsequent branch.

cc @BooDoo for code review.