@owend
I can see where you referred to M2, but I picked it up from the "GCodes not implemented which are not planned for implementation" section from here, when reviewing the documentation in response to @dc42's request above. I hadn't misunderstood what you'd written, I was just suggesting what could be supported.
However, as far as I can see M0 and M1 have a specific function dependent on what the machine is doing at the time and could be entered manually in the MDI to carry out that function, and seems particularly appropriate for 3D printers. The M2 command, on the other hand, when appended at the end of a programmed toolpath file, has the specific purpose of identifying the end of that program - as it does for plasma cutting (your reference). If M2 is implemented - as it's described in the document referenced above - then I think it would be for the benefit for CNC users.
Whatever the way forward, the Vectric post-processor I use for my machine doesn't include any M codes, other than to turn the spindle off:
; VECTRIC POST REVISION
; a long string of random text
T1
G17
G21
G90
G0Z5.090
G0X0.000Y0.000
M3P0S18000
G0X31.755Y28.580Z5.080
G1Z-1.000F762.0
G1X71.755F3683.0
====
Deleted code...
====
G3X107.470Y51.755I0.000J-14.285
G3X121.755Y37.470I14.285J0.000
G3X136.040Y51.755I0.000J14.285
G3X121.755Y66.040I-14.285J0.000
G1Y68.580
G3X104.930Y51.755I0.000J-16.825
G3X121.755Y34.930I16.825J0.000
G3X138.580Y51.755I0.000J16.825
G3X121.755Y68.580I-16.825J0.000
G0Z5.080
M5
G0Z5.090
G0X0.000Y0.000
...but maybe that's a failing of the PP?