Move the IVR's state machine into the controller

Clean up some unused APIs as a result