model.simulate: satisfy flake8
model.simulate: add Controller base class.

Controllers should implement model.simulate.Controller which
takes care of caching controller output for each valeu of t.