Decomposition inherits from GPBase, so it has cache()
syntactic sugar
caching mechanism works
fix long lasting bug on non-compiling products with solve()
use declval return values instead of Eigen-defined ones

they caused problems, because some traits are not defined in Eigen (see previous rev.)
fix Cache traits class so it is compatible with solve() caching