Added a very basic workflow in `Agent.run()`

Performed a lot of cleanup as part of this.  This commit includes some changes
outisde the scope of this topic branch.  Bad me.