A portable class library version of the DejaVu Undo Framework