Added new class GCTAModelBackground with preliminary functionality
added test case for npred integration of GCTAModelBackground
Merge branch 'devel' of https://cta-git.irap.omp.eu/gammalib into 576-introduce-GCTAModelBackground
implemented isconstant()-method and caching logic for eval()
Merge branch 'devel' of https://cta-git.irap.omp.eu/gammalib into 576-introduce-GCTAModelBackground
adding changed files from 576-adapt-diffuse-cube and recent pull from devel
added mc()-method and merged code from 576-adapt-diffuse-cube
adjusted unit test for GModel for the new constructor in GModelSpatialDiffuseCube
Make energy boundary loading and saving optional.

The XSPEC PHA format does not store the energy boundaries together with the PHA file. To support the original XSPEC PHA format, loading and saving of energy boundaries is now optional. A constructor has been added that allows constructing of a GPha object by specifying the number of channels only.
Use GEnergies class instead of std::vector<GEnergy>
Only append energy node in set_mc_cone() method if flux is positive.
Make compatible to older matplotlib version and adapt cube file path so that the script can be directly started from the inst/cta/test directory.
Reformat source code to make it compliant with coding conventions.
Adjust copyright and header text.
Reformat source code to make it compliant with GammaLib coding conventions.
Add pure virtual mc() method to GModelData class.

All models derived from GModelData now need to implement a mc() method. The abstract mc() method returns a pointer to GEvents*, thus allowing a method to either simulate an event list or an event cube.
Evaluate function and error also if there were no parameters to fit.

Before, no evaluation was done if there was no parameter to fit, giving an empty model in case that all parameters were fixed. Now, the final evaluation is done in all cases.
Add protection against negative values in eval() and eval_gradients() methods.
Reformat code
Remove the solid angle computation.

No solid angle computation is needed as the flux is given in units of cts/s, not cts/s/sr (at least for the diffuse cube model the spectrum is computed in units of cts/s/MeV; integration then provides cts/s).