Create IProjectSerialisable interface.

This is the first part of the interface needed for the project
loading/saving refactoring. It specifies the method used to
accept input lines from a project and apply them to the window.

Refs #9970
Begin moving MultiLayer parsing into MultiLayer itself.

Refs #9970
Fix minor bug where project root folder was left unnamed.

Refs #9970
Change IProjectSerialisationInterface to ease further refactoring.

Refs #9970
Add float parsing to TSVSerialiser

Refs #9970
Implement most of Graph::loadFromProject

This is the vast majority of loadFromProject implemented.

Yet to be implemented:
 - <spectrogram>
 - <AxisFormula (N)>

Unable to be implemented currently:
 - <CurveLabels>
 - <MantidYErrors>
 - <SkipPoints>

This is because their parsing depends on their order relative to the
definition of curves in the project file. We cannot handle this
correctly because we do not discern the order of elements when parsing.
To resolve this, we will either have to make TSVSerialiser a lot more
sophisticated, or break backwards compatibility for a few small cases.

Refs #9970.
Fix typo in date. Refs #9970
Remove legacy cruft.

 Assertion: Mantid was forked from QtiPlot 0.9.5
 Therefore: Mantid has never saved a project file with a format older
            than 0.9.5.
Conclusion: It's safe to delete this cruft as it'll be never used.

Refs #9970
Refs #9970. Tweak comment.
Stub out ApplicationWindow::openGraph

We're not yet at the point of being able to delete this, but we're
getting close, so for now let's stub out this function.

Refs #9970
Remove unused methods from ApplicationWindow.

These were used by openGraph. They have been moved into the Graph class.

Refs #9970.
Remove some obsolete logic from Graph::fillCurveSettings

Mantid was forked from QtiPlot 0.9.5 so we'll never encounter a
project with a file version older than 0.9.5.

Refs #9970.
Refs #9970. Remove orphaned method in Graph.
Add support for indented lines to TSVSerialiser.

The <spectrogram> section indents its subelements. TSVSerialiser doesn't
parse that correctly. This commit adds support to parse indented sections
correctly.

Refs #9970
Remove orphaned method Graph::restoreSpectrogram.

Refs #9970
Stub IProjectSerialisable interface in Spectrogram.

Refs #9970
Improve multilayer scale parsing.

Axis scales were not being loaded correctly. This has *mostly* fixed it.
When loading spectrograms (and probably other plots) the right Y axis
scale is not being set correctly, and nor are the major tick values on
any of the axes.

Refs #9970
Re-enable restoring geometry of most windows on project load.

Refs #9970
Add <spectrogram> handler to Graph::loadFromProject.

Refs #9970
Parse spectrogram sections from project files.

This commit add basic support for parsing spectrogram sections and
loading them into projects properly. Not all sections are supported yet.
<ColorBar> and <ColorMap> are notably unsupported. They shouldn't be too
difficult to add later on though.

Refs #9970