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.

I'm not entirely sure I did the bindings the way we discussed. Also I did use Context::Borrowed again, so maybe make sure I used it safely this time...

Fixes #865.