refactor(event): synchronous EventBus

Simplify the EventBus by making its dispatching synchronous. This
makes testing deterministic.
chore(agent): clean up ableToRun with more consistent logging
chore(release): Bump version to v0.4.0+git
fix(version): Fix failing test
refactor(fleetctl): Rename vars in list_units.go
feat(fleetctl): User-defined columns in list-machines

Fix #485
Merge pull request #497 from bcwaldon/485

User-defined columns for list-machines output
Merge pull request #487 from bcwaldon/synchronous-event-bus

Simplify EventBus
fix(agent): Reword wonky comment
Merge pull request #492 from jonboulle/agent_cleanup

chore(agent): clean up ableToRun with more consistent logging
Merge pull request #499 from bcwaldon/agent-comment

fix(agent): Reword wonky comment
test(agent): Simple offer/bid integration test
test(cluster): Add cluster-level integration test