feat(controllerTraining): add function param to addManipulationListener()

Rather than patching an arbitrary function to be called
when a DOM API is called, addManipulationListener() now
takes a 'givenFunction' param that will be patched in for
customization.

Closes #2