Fix oversights

Missing test coverage for `frame_no` and `process_func` let in some API inconsistencies and some functionality missing from some classes.

This adds tests and makes several important (but I think uncontroversial) fixes.
My understanding is that ABC can only enforce mandatory class members (methods or properties), not the names/order of args/kwargs.