Store arithmetic types by value inside expressions

This allows to capture expressions inside temporary variables
without problems with dangling references:

   auto expr = pow(x, 2.0);
Added test showing an alternative to kernel generator

The test uses lazy evaluation by capturing intermediate expressions
with help of 'auto' keyword.