Corrected ambiguous contructor of List who aggregated Expression objects
but copied/moved lists. As lists are derived from expression its behavior
become strange when a list were aggregated if it was referencied by an
`Expression &` variable.

So I removed the aggregation contructor, as copy/move is the standard
semantics. The aggregation is now done by list() functions, that avoid any
ambiguity, mantaining the interface's simplicity.
Renamed code method to eval, as it is more meaningful with intended behavior.