Simplify CodeRunner hierarchy a bit (replace pre and post arguments with
pre_update and post_update methods that can be overwritten by
subclasses).
Update docs and add a test