Evaluate list, map, and term literals lazily when used as [...] default

This change avoids subtle bugs when a there is a function hidden
somewhere in the default value.

Note that we still evaluate empty lists, maps, and terms non-lazily as
there could be no function hidden inside them.

This extends previous fix of #20.