Package exec: Refactoring and code cleanup.
Package exec: Refactoring and code cleanup.

* Move the definition of the valueCallback and voidCallback types closer
  to their methods.
* Turn valueCallback into a pointer receiver, as its run() method modifies
  the struct.
* Dereference the ValueList held by the value callback to avoid external
  modification.
* Call WaitGroup.Done() from a deferred statement.
* Simplify the select/case syntax (no need for a blank assignment).
* Use struct{} for the "done" channels, to show that its only purpose is
  signaling.
* Close the "done" channels instead of sending a value.

octo/go-collectd,collectd/go-collectd