Add command line options parsing

This allows us to specify particular scenarios to run.
Fix Python3 compatibility
Log exceptions in worker tasks
Add logging in converger
Implement a representation of physical resources

This will allow us to asert in tests that the correct things are
happening to the physical resources being manipulated by the
orchestration.
Don't place test assertions in the message queue

This doesn't work, because the data on which the assertion will operate
also needs to be gathered at the time the assertion is run, and not
before.

Instead, define test functions that include assertions and schedule
those in the queue.
Add a 'verify' function to compare reality to template

Inspired by Michał Jastrzębski.