the platform should be contacted after FSMEventOut returns and the thread exists
maybe isStopped() should only return true if the thread is stopped
but, avoid deadlock
the platform should probably have another thread that loops until the agent is stopped and is started [by the mobility component] when the movement is initiated.