extend comment to ternary_helper
Change requirements on underlying data types.

The expression class can hold "arbitrary" data members when the operation is
operations::immediate. However, some assumptions have to be made. We used to
assume that the data is default constructible but not necessarily copy
constructible.

This commit changes things so that data does not have to be default
constructible, in anticipation of contexts. We instead now have to assume
copy constructibility.

This commit also does changes throughout the code base to remove default
instantiations.