But using properties seems to be more preferable since there is a need to
implement more related features like delete-selection-mode and inventing
more funny interactive codes doesn't seem like a wise thing to do.
The only problem I see is that properties currently are hard to discover.
I think that just as `C-h f' describe-function displays information
when the function is advised, we should change `C-h v' describe-variable
to display information about attached variable properties as well.
Also as Kim already noted supporting external packages using the
interactive specification code approach would be a nightmare.
So it seems it would be the best to go the way Kim suggested and
just reimplement in C cua-selection-mode with properties that was
proven by time and experience to be the right solution.