Extended play API to allow explicit context arguments (to placate C).

Having done this, I can see that the Rust <-> C interfacing is working
okay, but the Rust <-> Racket interaction is still failing to unwind
the stack properly.