changed notify routine

- added templates
- added constructor for Model to accept a boost::function as exchange
for default function used in Notify(). function has to accept 1 argument
which has to be the instance