Reimplemented ExecutableNode::Task comparison functions and member access.

All members are now private, with public accessors to the const values. The hash is defined at construction by the node's executionHash, and Operator == and < use the hash directly.

Fixes #865.
Improved Plug bindings with a new PlugClass helper class.

This matches the way other bindings are done, and removes the need to remember to use a nasty macro to bind the various Plug virtual functions.
Added immutability comments to ExecutableNode::Task docs

Also taking a copy of the Context at construction.
Merge pull request #886 from andrewkaufman/taskComparison

Reimplemented ExecutableNode::Task comparison functions and member access