OK, 6 tries later (lol) I have some functional code for a manual tool change with tool length compensation. This is for those running directly from Rep Host, you probably just need to change M0 to M25 for SD usage. It is not elegant and probably inefficient, but it works for me. Just tested on a bit of foam, will try a proper job with it in MDF tomorrow. Also this is probably only safe for going from a longer bit to a smaller bit. I think it would work in reverse if you just make the Z before the G92 positive, but be careful!
To find the tool length offset I brought the Z down with a piece of paper till there was friction, swapped bits and did it again then found the difference.
G1 Z30 F2000 ;T2, Raise spindle for tool change
G1 X-20 Y-20 F2000; Move off part for tool change
N148760 M117 Change to Tool T2
N148765 M0 ;Pause for Tool T2
G1 X0.0 Y0.0 F2000 ; Home XY axis
G1 Z-12.97 F2000 ; Tool length compensation for T2 1/16 e mill
G92 X0.0 Y0.0 Z0.0 ; Reset home
G1 Z15.0 ; Raise spindle to avoid dragging
;T2, Back to business