Added file import/export.
Added first implementation of the Reference node.

This is basically functional, except for the fact that reloading doesn't work at all - it just keeps stacking up copies of the internal nodes.
Fixed reload in Reference nodes.

Nodes and plugs no longer accumulate copies when a reference is loaded again. We attempt to reuse old external plugs where possible (when they correspond to the newly loaded external plugs) so that the outside of the node changes as little as possible from an observers point of view.
Added failing test.
Fixed unwanted deletion of custom plugs on Reference nodes.

Previously plugs that were unrelated to the reference were being deleted when a reference was reloaded. This would include plugs added by the ui for keeping track of node position etc. Now plugs are only removed if they are considered part of the reference - if they have connections to the nodes within the reference.
Fixed save/load of scripts containing Reference nodes.

Previously, the Reference node was allowing its referenced plugs to be serialised into the main script as well, causing them to double up on reload. It now marks them all as non-dynamic after loading to prevent this behaviour.

Also modified the serialisation for Node so that child nodes of nodes are not serialised - this is the behaviour we need for the Reference but I think it holds that most Node-derived types wouldn't want their child nodes serialising - typically they would be created on construction to perform some preprocessing of inputs and wouldn't be created by the user. The exceptions to this rule are the ScriptNode and Box, whose serialisers have been updated to ensure that their child nodes are still serialised.
Stopped unwanted plugs from being saved by Box::exportForReference().