Undo engine can now capture on-canvas changes that occur between Process calls

This commit reminds me of this article:
http://stilldrinking.org/programming-sucks, specifically the fifth and
sixth paragraphs.

This commit is "good code".  :)  It's one of those commits that's only a
handful of lines, but it's an elegant solution made possible by a
thousand good design decisions in the past.  (So basically, it's very
different from most my PD commits, lol.)

Any on-canvas changes the user makes to a selection are now saved as a
single Undo/Redo point.  This doesn't sound very interesting, but it
finally allows us to catch tricky action sequences like:

1 - load image
2 - create elliptical selection
3 - invert RGB
4 - modify selection feathering using the selection toolbox
5 - invert RGB again

Never before has PD been able to easily capture step 4 in this process,
but we can now do it with a single small check in the Process function.
I am very excited about this.

This strategy also gives us an excellent framework for checking other
on-canvas modifications in the future, without overloading the Undo/Redo
engine every time a change is made.