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
Added typeId to the default ExecutableNode::executionHash
Fixed ImageWriter::executionHash to use the provided context.

Also added the writeMode and channels plugs to the hash, and added a short-circuit when the file or input image are empty.
ExecutableRender::executionHash now accounts for the input node and the context.

Note that we are hashing the address of the input node to work around the lack of a hierarchyHash. This should be safe because executionHash needs to be valid during Dispatcher::dispatch(), and no nodes should be deleted during that time.

I haven't added tests for ArnoldRender because I can't run it locally, but the OpenGL and RenderMan tests are nearly identical, and ArnoldRender doesn't override executionHash.
SceneWriter::executionHash now accounts for the file name, input node, and the context.

Note that we are hashing the address of the input node to work around the lack of a hierarchyHash. This should be safe because executionHash needs to be valid during Dispatcher::dispatch(), and no nodes should be deleted during that time.
ExecutableOpHolder::executionHash calls the base class first.

Also added tests, and we are returning the default hash if no op is set.
ExecutableOpHolder::execute performs context substitution on its parameters.

This is a workaround until scoping the Context takes care of it automatically.
Defined ObjectWriter::executionHash and added tests.

Fixes #878
Replaced time with frame in tests.

Also removed redundant line from exectutionHash
Hashed the address of the scenePlug rather than the node.
ObjectWriter::executionHash checks for input connections, rather than the plug value.
Fixed ambiguous MurmurHash::append() calls on OS X.
Merge branch 'andrewkaufman-executionHashes'
Bumped version to 0.98.0 and updated Changes file.