Fixed bug in Path inequality operator.

It was ignoring the root.
Fixed MenuButton bug whereby menu could be shown partially off screen.
Fixed SceneReader hashing, and made childNames hash constant.

The SceneReader::hash() method was lazily hashing in time for everything, regardless of whether it was even related to outPlug(). It now correctly implements the hash*() methods instead, but omits hashChildNames() because the hierarchy provided by SceneInterfaces is static over time. This shaves approximately 6% off the time to traverse 20 frames of an animated scene.
Added ValuePlug.cacheMemoryUsage() static method.
Optimised SceneReader by detecting non-animating properties.

This knocks about 30% off of the time to traverse a 20 frame test animation with a mixture of deforming and static geometry. It also reduces cache memory usage by some 60%. There is a small time overhead for single frame display, but that will be addressed in a future commit.
Optimised SceneReader::scene() for repeated access to the same scene.

This knocks 8% off the time taken to traverse a 20 frame test animation, and restores previous performance for traversing a single frame.