Fetch size fixes and optimizations

Creates a FlushingMutator proxy.  This stops us for using too much memory on heavily connected updates.

Uses larger candidate fetch sizes for intersections and unions.  This results in much better performance, even though we're discarding a majority of the results because we avoid network i/o wait.

Fixes bug with creating a connection between 2 entities if the target ref does not exist.