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.

What if I change an attribute at that location - doesn't the same argument apply? I think it makes much more sense for HierarchyHash to be "the hash of all data at this location and all data at locations below". If you want to instance that, then you put the transform above it. I'd need to check, but I think Alembic has a hierarchy hash with the semantics I'm suggesting, and that's the way I'd do it in Gaffer too.