refactor(event): synchronous EventBus

Simplify the EventBus by making its dispatching synchronous. This
makes testing deterministic.
refactor(registry): Move TestRegistry to registry pkg
refactor(TestRegistry): Embed Registry iface and drop unimplemented methods
refactor(TestRegistry): Use pointer receivers
refactor(registry): s/TestRegistry/FakeRegistry/
refactor(FakeRegistry): Use map to store Jobs
refactor(FakeRegistry): Use setters to load fixtures
fix(FakeRegistry): Protect access with mutex
feat(FakeRegistry): Implement CreateJob & DestroyJob
feat(FakeRegistry): Implement JobBid-related methods
feat(FakeRegistry): Implement SaveUnitState
feat(FakeRegistry): Implement Set/GetJobTargetState
test(FakeRegistry): Assert fake registry job functionality
Merge pull request #490 from bcwaldon/fakeregistry

Refactor TestRegistry into something reusable
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