ProgramBuilder can now re-use results from identical expressions.

For now this capability won't get used in most cases because
operators are newly instantiated each time and won't feel
equal to each other.

Add to-do item has been added about that.