Classes for UndoableAction (Abstract), Add, and Message

Action is an abstract class for an action that can be undone (Add,
Delete, etc.) while Add is an implementation of the Add action.

execute() is used for executing that action, and undo() is used to undo
it. Both methods return a Message object.

Message contains a type and a message.