Lambda expression for elements of function space 

allow lambda expression such that
```
auto a = form2(Xh,Xh)
a=  integrate( ... _expr=idv(_e1) *gradv(_e2) );
```
however this currently implies that we change the semantic with respect to
operators which means copying the function each time we use one of these
keywords instead of storing the reference.
Let's see if we manage to fix that. That is the reason why it is in a branch