master's processing goes directly through normal event handlers now (rather than being handled ad hoc)
add test_gap test and change a bunch of stuff so that it actually passes. we now fill gaps with nops, meaning we can keep going even after many bad things