made a diff block (in new architecture)

This is just for people to peruse re: architecture problem; this is not intended for merging.  (I'm also making this so I don't forget things after next week, during which I don't plan to work on streamtools.)

I still like the abstraction rules of: make go-channel blocks as the basic unit (utilizing native-go-type functions as necessary) with a defined set of go-block templates e.g. transform, import, etc.; then having a block-wrapper code which simply handles connecting go channels to and from nsq.
That said, perhaps more things in this example should be in structs (e.g. nsq block wrapper), rather than just functions running loose in the package.

I've been trying to think what I should build next to try and break this architecture -- thoughts?