Modification to transform invalidation

I have just merged in a rework of the transform invalidation mechanism
onto mpl master.
Throughout development it was clear that these changes can have wide
reaching and unexpected impacts on upstream code, as was highlighted
on more than one occasion when running the mpl unit tests.

Whilst I do not anticipate further issues, I am giving this heads up
just in case strange, possibly transform related, issues arise since
committing #723 (https://github.com/matplotlib/matplotlib/pull/723).
Debugging transform issues can get quite deep, so if you do come
across anything and want to share the burden I would be happy to help
if you can provide code to reproduce the issue.

Thanks,