Adding hash function to SceneInterface

I've added a hash function with an enum that computes different kinds of hashes (for Object, Transform, child names, etc) for a given point in time.

This will allow better use of caching mechanisms when loading scenes as well as use of instances in engines such as Gaffer.

I see we're not doing the same in LinkedScene - is that so that when LinkedScene passes through a hash from a linked file, it comes through unchanged? In Object::hash() and ComputeNode::hash(), the base class implementation hashes in the typeId, and it's documented that derived classes should call the base class first (except when passing through a hash directly in ComputeNode) - I wonder if it's worth doing the same here?