Graph doesn't need to inherit IProjectSerialisable.

Graph itself is not a top level window that's saved as part of a
project. It's a child object of MultiLayer. MultiLayer handles loading
and saving graphs explicitly, so the interface is simply not needed
here.

Refs #9970.
Refactor Note's load/save to use IProjectSerialisable.

Refs #9970.
Replace Graph3D::saveToString with Graph3D::saveToProject.

Refs #9970.
Remove IProjectSerialisable interface from Spectrogram.

Spectrogram is not an MdiSubwindow, so it doesn't need this interface,
as it's not going to be serialised directly. It's explicitly
serialised/deserialised by the graph that owns it. So we can ditch the
official interface and just use simplified methods similar to the
interface.

Refs #9970.
Replace Spectrogram::saveToString with Spectrogram::saveToProject.

Refs #9970.
Force implementors of IProjectSerialisable to implement saveToProject.

Refs #9970.
Make InstrumentWindow implement IProjectSerialisable.

Refs #9970.
Move some logic into Table::saveTableMetadata.

I'm doing this so it can be re-used by TableStatistics.

Refs #9970.
Refactor TableStatistics's saveToString into saveToProject.

Refs #9970.
Remove orphaned functions from Table.

Refs #9970.
Fix some small errors in Graph::saveToProject.

Refs #9970.