add virtual destructor to base class/rename c++ headers

This adds a virtual destructor to the abstract Model class and renames the C++ headers. These are the changes necessary for implementing a C/Python API based on call-backs (see: https://github.com/beaylott/DNest3 ) and it would be convenient if the main repository incorporated these changes ... and it maybe also is more conventional. 

I guess is a matter of taste whether the default destructors should be specified in the interfaces or the object code... I have put them in the interfaces.

I have also updated all the examples with explicit default destructors so they are compatible with the change.