Declare CanCut, CanCopy, and Replace as virtual functions.
This was done to fix warnings in gcc.
I don't know why these weren't virtual or what making them virtual fixes, but it seems reasonable that if the base class wanted to do any of those things, that it should use our implementation.