Fixed the differencing of images for the webagg/nbagg backends.

In #3552 I improved the ability to handle images with transparency in the webagg/nbagg backends. Unfortunately, in doing so, I managed to break the differencing mode by always clearing the existing image on the javascript side. This change fixes the issue by keeping track of the image mode in the backend and notifying the client of any changes (as a result of transparency appearing).
Could do. There is a performance cost to using properties over methods, but I agree, it would be a more pleasant interface. Having said that, I was very tempted to put a leading underscore in the name as it is a pretty useless interface unless you are developing some code in ``get_diff_image``...