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.
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