AgentRuntime refactored to support starting of agents at any time.

Now the AgentRuntime has two startAgent() methods which can be used to
start agents at any time. There is no stopAgent() functionality yet.