Wire protocol: handle exceptions in hooks

This replaces #73.

I've investigated, and the cause is that the before/after code in the 
central ProgrammingLanugage abstraction runs before the scenario has
started. This means any exceptions at this point are handled like
exceptions in the regular Cucumber source code, rather than 
exceptions in the scenario.

I'm deferring this until 2.0