Don't log every second an RPC is waiting.
Add new optimization pass: CollapseCachedExpressions.

This collapses previously evaluated expressions which an an
entry in the expression cache.  This prevents map fusion from
re-executing previously evaluated code in an inlined context.

Update expression caching to work better.  We now track
expression ids everywhere.  Whenever an expression is cloned
for optimization, the expression id remains the same; this
allows us to find cached values easily, whether we executed
an optimized version of an expression or the original.