It seems mswatch could be genearlized beyond watching mail stores to
watching data sources for changes and running a command to act upon these
changes. How helpful such a generalization like the one below could be
is up in the air, however.


watchact <ACT> <WATCH> [<WATCH> ...]
	eg watchact mbsync "watch_maildirs ..." "ssh mail ..."
	eg watch_maildirs ... | watchact mbsync - "ssh mail ..."
- mbsync channels could be added with an 'mbsync-channel frostnet'
- could this be made smart enough to notice inotify optimizations?

this seems similar to
	(watch1; watch2) | xargs --max-args=1 mbsync
except it:
- coalesces over short periods
- is able to notice and restart dead watchers
- correctly read with >1 watcher; '(;) |' may incorrectly combine write()s.
	this could be fixed with a 'buffer'
		(watch1 | buffer; watch2 | buffer) | xargs --max-args=1 mbsync
	as long as buffer's write() is able write the whole string in one shot

side thoughts:
- provide option to not uniq elts (then this program is xargs + periodic flushes + multiple input option)
- generalize to watch N inputs
