Made Plug flags serialisation more future proof.

Our previous method meant that we couldn't introduce new default flags in the future, because they would default to off when loading old files. This new approach always serialises by adding and removing from Plug::Flags::Default to avoid this problem.

Pleasingly, this also reduces the file size of a large graph with many shaders by over 20%, and reduces the loading time by almost 10%.

Fixes #684.
Removed redundant serialisation of default values.

This reduced file sizes by 25% and load times by nearly 20% for a large production script.

Note that changing the default value for a plug or shader parameter now represents a backwards compatibility break with old scripts.
Fixed serialisation of Constant node with zero alpha.

Rather than correctly set the default value for the color plug in the constructor, the Constant node was constructing with a default of 0, and then in the constructor calling setValue( 1 ). This breaks completely with the default-value-omission optimisation, because when the user sets the value back to the true default, the value isn't saved out, and then on reloading the constructor clobbers the true default.
Made CompoundDataPlug::addMember() set plug default values.

This is necessary to avoid the same serialisation-of-default-values problem as was addressed in the Constant node in the previous commit. It also improves things from a user perspective - setting a value in an Attributes or Options node back to default now reverts it to the value it had on construction rather than always setting it to 0 or "".
Merge pull request #754 from johnhaddon/ioImprovements

I/O improvements