Add AbstractModel

AbstractModel allows to add and remove PropertyChangeListeners and to
fire PropertyChangeEvents.