Note: We change all our lifetimes in this. It was getting too complicated for this first pass to avoid copies. This makes lifetime management much easier to handle. Each one of Val, Value, and Expression contain no references anymore.
The duplicate name was easily confused with the Val::Tuple type.
Builder struct that takes a list of Statements and constructs a Tuple from it.