Fixed bug in evalHandler/runHandler: now we run the cleanup action

@mightybyte knows about his one.

* Fixed a bug in `evalHandler` and `runHandler`, where we weren't running the cleanup actions
* Refactored common logic into a DRYer function
* Revamped the testsuite upper bounds

I've compiled and did a sanity check (namely re-run the full test suite).