I didn't test it, but You can override set_cell method of tilemap. In theory You could do something like this inside a custom script extending from tilemap script :
func set_cell ( int x, int y, int tile, bool flip_x=false, bool flip_y=false, bool transpose=false, Vector2 autotile_coord=Vector2( 0, 0 ) ) :
.set_cell ( int x, int y, int tile, bool flip_x=false, bool flip_y=false, bool transpose=false, Vector2 autotile_coord=Vector2( 0, 0 ) )
emit_signal("yoursignal",yourargument)