Combined action

Should fix #137 

This change does a lot -- the aim is to allow a "batch" mode for actions by requiring to wait on a channel when we're in synchronous mode.