improvements to enum constant handling

compute constant values for complex enum expressions.
emit enum declarations using source expressions.
emit enum code using computed constant values.