Add history controller to core API

Builds upon #803 to implement #423.
Right you are, I am terrible at python