refs #10385. Extract spectrum info to object.

This is the first step towards reusing the same spectrum information rather than fetching it renewed each time.
One caveat with this is that you will HAVE to be sure that all workspaces in the group are equivalent in terms of instrument detector mappings etc.
What i intend to do next is:

1) For workspaces that look to relate to multiperiod group workspaces, default to reuse the spectrum-detectector mappings, once obtained on a lazy basis.
2) Put a boolean property with value in place (which defaults to true) called "PredictiveInstrumentLoading". If false, we would go back to old behaviour.
refs #10385. Naming issue root problem.

There is a naming issue here, which is actually the root cause of the problem! The query that was being performed retrieved the number of workspace entries, NOT the number of periods.
Going forward. If the number of periods exactly matches the number of workspace entries, we have a multiperiod group workspace, and can happily apply the optimisations we want.

Next step will be to actually extract the nperiods. To do that we need to try to fetch it out of the logs for The first entry.
refs #10385. Query default property.
refs #10385. Multiperiod query.
refs #10385. Reuse the SpecInfo on multiperiod groups.
refs #10385. Try to use clone and write technique.
refs #10385. Test file is twice as fast now.

There are lots of TODOs still to resolve. We also need to add tests for this sort of multiperiod loading.
refs #10385. Add failing test.

We are not currently handling log extraction properly, which is why the test is failing.

File size is just over the threshold, but shouldn't be a problem. I've tried to trim it down as much as possible.
refs #10385. Remove log values


This fixes the regression test. We clear the logs off the temporary workspace, that way we don't have to do a similar thing in the loop, and we avoid copying them over each time. This is not a fully formed solution, but it's a start.
refs #10385. Reporting added and extra property.


Also better robustness around workspace type.
refs #10385 Refactor new functionality to method.


Should read better now, although the entire algorithm is still a mess.
refs #10385. Remove instrument info caching

This does result in a speed up, but the caching is being bypassed at the moment since our strategy is to clone and overwrite. I've removed the caching code as part of the clean up, but I've kept the SpecInfo type around as it makes the usage clearer, and does not result in a performance penalty.
refs #10385. Minor changes.
refs #10385. Put error identifer code in place.
refs #10385 Extend tests.

Extend tests. Do not process spectrum lists.
refs #10385. Fix warnings.
refs #10385. Fix cpp check issue.
Commit 01 Refs #8959 checkpointing
Commit 2 Refs #8959 checkpoint
Commit 3 Refs #8959 added new saveAlgorithm with custom header detail