Add ewidth() method.

The ewidth() method returns the bin width of an energy bin.
Rework map cube spatial model class.

The map cube is no longer normalised, but the values are taken as given. It is assumed that the map cube pixels are given in units of ph/cm2/s/sr/MeV.

The eval() and eval_gradients() methods now provide interpolation of the maps in energy. For this purpose, the energy values of the maps are stored in log10(energy) in the m_logE member node array.

The mc() method has now also been implemented. It takes the nearest map from the map cube and returns a random sky direction following the intensity distribution of this map.

A spectrum() method has been implemented that returns the spatially integrated intensity of each map in the map cube as a GModelSpectralNodes object. This method is used in GModelSky for Monte Carlo simulations.
Implement diffuse map cube support in mc() method.

The mc() method now explicitely support Monte Carlo simulation for diffuse map cubes. The method detects whether a spatial component is of type GModelSpatialDiffuseCube. In case, it takes the diffuse map cube spectrum as the spectral component, implemented by a GModelSpectralNodes object. Any existing spectral component is multiplied to the nodes model by evaluation the spectral function at the node energies.

Note that the method still has a limitation in that the simulation cone is not taken into account when extracting the diffuse map cube spectrum.
Change model name.
Disable Monte Carlo simulations
Add set_mc_cone() method that allows setting of a simulation cone to limit the sky directions returned by mc() to all pixels that touch a circular region. In addition, only pixels of which the centre falls within the circular region are considered for determining the spectral node function.

Note that this method affects the Monte Carlo cache.
Use effective pixel radius to assess which of the pixels lie within the simulation cone.
Use GModelSpatialDiffuseCube::set_mc_cone() method to limit the Monte Carlo sampling to the simulation cone.

This assures that the simulated spectrum corresponds indeed to the selected zone in the diffuse map cube, and also considerably speeds up computations for large maps.
Add test script for diffuse map cubes.
Adapt for modified diffuse map cube class.
Add GEnergies container class.

The GEnergies container class holds objects of type GEnergy.
Use GEnergies container instead of GEnergy vector.
Add FITS file I/O support for GEnergies class.

Added the methods load(), save(), read() and write() to enable saving and loading of energies into a FITS file.
Add load constructor to GEnergies class.

The load constructor creates an instance of the GEnergies class by loading the energy information from a FITS file.
Use GEnergies class to load and attribute energy values.
Move deadtime correction from GResponse base class to derived classes.

The old scheme with the deadtime correction in the base class led to some irf/npred methods having deadtime correction and others without correction. This definitely was a source of confusion and potential errors. Now, deadtime corrections have to be done at the instrument level, enhancing clarity of the interfaces and flexibility, at the expense of some burden on the instrument specific response class implementation that now has to take care of the proper handling of deadtime.
Add description of response handling to User Manual.