Evaluated flag

add an is_evaluated flag to Expression to prevent re-evaluation of the same Expression instance.

Fixes #43