Feature auto merge

Implements AutoMerge. This gathers all data of a specified type that is either broadcast or piped to AutoMerge::gather and makes it available as an unordered_set in the parent context.

- Attempting to do this with an AutoFilter would result in run_time errors being thrown.
- The AutoMerge method must be a final call, since the multiplicity of the specified type cannot be known until all AutoFilter calls are complete. This is why the data appears in the parent context.