Adding an early version of concurrency support to CascadedPolygonUnion.
Things this doesn't do that it should (in decreasing order of importance):
1. Allow the caller to request single-threaded operation.
2. Accept a CancellationToken so that the caller can request cancellation.
3. Accept some sort of IProgress<T> so that the caller can get progress reports.
4. Allow idle threads to start working on unioning part of the next level immediately.