For my laser I use M11P1 to turn the laser on and M10P1 to turn it off. (these commands are added to the existing GCode in place of the Z- and Z+ commands).
I have the same problem with stopping mid line, the laser remains on.
The cure for this is, I think, to add a new, VB, screen 'stop' button which issues the M10P1 and then activates the feed hold function. Something similar could possibly be done for the single step function.
Tweakie.