Add optimizer example.
Add GOptimizerPar class.

The GOptimizePar class has been copied over from GModelPar. The only methods that were not copied were the read() and write() methods for the XML format.
GModelPar now derived from GOptimzerPars.

GModelPar is now derived from GOptimzerPars and implements in addition to the base class a read() and write() method that takes an XML element as argument.
Make GModels and GOptimizerPars independent container classes.

Initially, there was a unlogic relation between GModels and GOptimizerPars, where GModels derives from GOptimizerPars, but both classes contained different types of objects. GModels is a model container, while GOptimizerPars is a parameter container.

Now, GModels derives directly from GContainer and no longer from GOptimizerPars. The GModels::pars() method has been added to extract a flat array of model parameter pointers into a GOptimizerPars object.

GOptimizerPars, which was abstract before, is now a real container class that also derives from GContainer.
Rename GObservations::optimizer to GObservations::likelihood.
Properly delete elements before removing their pointers.

Delete statements have been added to the remove() method(s) so that the elements are properly deleted before the pointers are erased.
Check for validity of logger before every logging operation.
Document optimization.
Exclude optimize executable.