Removed unnecessary overhead from Object::copy().

The shared_ptr machinery has a pretty significant overhead when copying small objects - this change gives almost a 50% reduction in runtime in a benchmark which copies many small data objects (where lazy-copy-on-write defers most of the real work anyway).

There were a few unecessary overheads :

- Allocating the CopyContext on the heap.
- Using a shared_ptr
	- Allocates another heap object for use as a reference count.
	- Uses atomic operations to increment and decrement the reference count.
Merge pull request #279 from johnhaddon/copyOptimisation

Removed unnecessary overhead from Object::copy().
Using new changingHierarchy attribute to mark children that appear/disappear over time.

The previous behaviour used scene:visible exclusively for this test, which ran into issues when trying to pass that attribute through from the liveScene.
Making SceneInterface::visibilityName a reference
Using SceneInterface::visibilityName now that it exists
Merge pull request #280 from andrewkaufman/visibileCrash

Fixing crash in SceneCache ROP todo with "scene:visible" attribute