Add output typemaps for automatic typecasting of all IRF components.
Add exposure and PSF cube file constructors, and response cube setting method.
Add pre-computation cache for sky direction access operator.

The pre-computation cache speeds up the interpolation in case of repeated requests of the same sky direction.
Correct argument alignment (coding style)
Add initial versions of GCTASourceCube and GCTASourceCubePointSource
Add spatial pixel and energy layer indices.

The spatial pixel index and energy layer indicate where in the event cube a pixel is located. If the event bin is not within an event cube, -1 is returned.
And time() and energy() methods and set spatial pixel and energy layer indices.
Correct Doxygen documentation of irf() method.
Correct setup flag for operator[] access.

For reasons I do not understand, m_need_setup = false in operator[]. However, we need setup after operator access, hence this should be m_need_setup = true. Corrected.
Implement classes to test response caching for cube-style analysis.
Add full caching to power law for speed testing.
Do not require setup in const operator[] access and add unit test for setup request in operator[] access.
Disable eval_gradient cache()
Replace untested dynamic_cast by static_cast.
Remove dumping of cube-style observation.
Adjust cube optimizer reference to new results.
Introduce GClassCode enumerator and add code() method to identify derived classes without using dynamic_cast constructs.
Make use of code() method to identify derived class type and replace some dynamic_cast statements by static_cast.
Test dynamic_cast replacement by static_cast.
Remove index range check from operator[] and declare operator inline. Add at() method for index range check. Put size() method inline.