Add an Action-based matching function to Union

As a companion to the Union<T1, T2, ...> method:

    T Match<T>(Func<T1, T> f1, Func<T2, T> f2, ...)

There is now also a:

    void Match(Action<T1> a1, Action<T2> a2, ...)
Rename ReceivedLog to Received

This is the primary log-receiving event, so it gets the short name.
Add config pools, and move CONFIG directory
Use IGuid with ILogSink; modify some comments