Deriving WriteNode from ExecutableNode.

Also updated the execute app to call Executable.execute( context ) rather than NotAnExecutable.execute(). DespatcherTest change was necessary to prevent test failures - it was adding a non-dynamic plug to Executable nodes, which would then fail to load after serialisation - preventing it from loading properly in the execute app.

I'm not happy about having to pass a list of one thing to the new execute() method all the time - I much prefer the old "with context : node.execute()" form. We could perhaps add an overload which performs that as a convenience - I tried that but then hit the snag that while the C++ overload is fine, we can't overload in python, and python nodes redefine execute(). This could be fixed by having public execute() overloads which do all their work by calling a protected doExecute() method or some such, which could then be implemented in python. That's out of the scope of this bunch of work though.