[#53230709] Initial UserScriptJob merging and unit test
[#53230709] Get UserScriptJob merge unit tests executing

Now we need to:

  - serialize the parameters for the subsequent merged jobs
  - update UserScriptAdapter to call the merged jobs
[#53230709] Properly populate sub folders of merged jobs
[#53230709] Merging of UserScriptJobs working
[#53230709] Reduce potential duplicate model parsing
[#53230709] Make all files from merged script runs available

And merge the loaded results.ossr files
Adding parameter flatoutdir, because this is used for PAT. Review comments/questions for @lefticus:

1. In flatoutdir mode, the RunManager test produces:

0-UserScript/
    1/
        in.osm
    2/
        in.osm
    mergedjob-1/
        in.rb
        user_script.rb
        params.json
        result.ossr
        *test files*
    mergedjob-2/
        in.rb
        user_script.rb
        params.json
        result.ossr
        *test files*
    out.osm
    params.json
    result.ossr
    stdout

Could this be instead something like:

0-UserScript/
    mergedjob-1/
        in.osm
        in.rb
        user_script.rb
        params.json
        result.ossr
        out.osm
        *test files*
    mergedjob-2/
        in.osm
        in.rb
        user_script.rb
        params.json
        result.ossr
        out.osm
        *test files*
    mergedjob-3/
        in.osm
        in.rb
        user_script.rb
        params.json
        result.ossr
        out.osm
        *test files*
    stdout
    stderr

2. I see in the RunManager test that all of the result.ossr files are locatable in the RunManager tree. However, I need to be able to match them up with their original jobs. I understand that optimizeJobTree basically collapses those three jobs into one. Would it be possible to have a "rexpandJobTree" that broke those jobs out again, so that each one has its own JobErrors class that has parsed its respective result.ossr file (and perhaps they all point to the same stdout and stderr files)? Even nicer from my point of view would be if those jobs never disappeared in the first place, but were only merged virtually ... On the other end of options, at the very least, at the end of the process, I could work with just having a separate JobErrors object for each original job.
Merge remote-tracking branch 'origin/develop' into 53230709_MergeUserScriptJobs
Merge remote-tracking branch 'origin/develop' into 53230709_MergeUserScriptJobs
[#53230709] Fix merged job use case, add merged details

Fix the ability for merged jobs to execute with flatoutdir enabled.

Add hasMergedJobs() and mergedJobResults() functions to Job, implemented
in RubyJob.
Merge branch '53230709_MergeUserScriptJobs' of github.com:NREL/OpenStudio into 53230709_MergeUserScriptJobs
[#53230709] Add missing MergedJobResults files
[#53230709] Add reference to MergedJobResults.hpp
[#53230709] correct failing unit test in RunManager
Merge branch 'origin/develop'

Conflicts:
	openstudiocore/src/runmanager/lib/RubyJobUtils.cpp
Merge branch 'develop' into 53230709_MergeUserScriptJobs

Conflicts:
	openstudiocore/src/runmanager/lib/RubyJobUtils.cpp
Nominal completion of merging user script jobs. Now to see if it works.

[#53230709]
More progress.

[#53230709]
Okay, I think merging user script jobs works now.

[#53230709]
Fixing a couple issues found with running PATTest.

[#53230709]