Speed-up matrix multiplication.

Before the matrix access operator was used in matrix multiplication which led to a substantial overhead. Now, a pointer on the matrix memory is used which considerably speeds-up the computations.
name() method now returns const std::string reference.
Declare attribute access methods explicitly inline.
Add *.i~ to ignored files.
Add Npred cache
Avoid temporal integration in npred_temp() when model is constant.
Remove CTA specific npred_temp() method.

The npred_temp() method in GObservation now checks whether temporal integration is needed or not. This makes the CTA specific method obsolete, allowing now also for time variable model handling for CTA.
Adapt to change of integration precision in GObservation::npred_spec from 1e-6 to 1e-5.
Add energy and time to cache parameters.
Set npred_spec() integration precision to 1e-5.
Add m_index member and index() method for locating an event in a list.
Implement irf_cache handling.

The IRF cache avoids recomputation of IRF values for diffuse models. This considerably speeds up computations. A cache vector is allocated when needed, and the vector is filled with IRF values by the GCTAResponse::irf_diffuse method. This method will also check the cache before starting any new computation.
Use irf_cache in irf_diffuse and npred_cache in npred_diffuse.

Using a pre computation caches considerably speeds up the computation for diffuse models.
Add .gitignore~